这题关键代码:synchronized(temp) //同步锁锁定号码集合temp
import java.util.ArrayList;
import java.util.List;
/**
* @author $KangMiao$
* 做一个放号器, 多个线程同时申请号码不重复.
* 比如: 线程1 : 1, 4, 5,… 线程2 : 2, 3, 7… 线程2 :6,8,9...
*/
public class ApplyNum implements Runnable {
private Integer index;
private List<Integer> temp;
//初始化一个集合 用来放1-100的号码
{
temp = new ArrayList<Integer>();
for (int i = 1; i <= 100; i++) {
temp.add(i);
}
}
public void run() {
while(temp.size()!=0){
synchronized(temp){ //同步锁锁定号码集合temp
if(temp.size()!=0){ //防止前面等待当前线程解锁的线程 因为号码器为空而报异常
int leng = temp.size();
index = (int) (Math.random() * leng); //随机获得一个 集合的索引值
System.out.println(Thread.currentThread().getName() + "申请的号码为:"
+ temp.get(index)); //打印出索引值对应的号码
temp.remove(temp.get(index)); //删除被申请过的号码
}else
System.out.println(Thread.currentThread().getName() +"号码已经取完!");
}
}
}
public static void main(String[] args) {
//实例化一个 与实例化多个对象 效果完全不一样,多个又重新分配多个号码集合
ApplyNum ay1 = new ApplyNum();
// ApplyNum ay2 = new ApplyNum();
new Thread(ay1).start();
new Thread(ay1).start();
new Thread(ay1).start();
new Thread(ay1).start();
new Thread(ay1).start();
new Thread(ay1).start();
new Thread(ay1).start();
}
}
分享到:
相关推荐
最新版鱼刺类.多线程6.ec模块
Java多线程.pptJava多线程.pptJava多线程.pptJava多线程.pptJava多线程.pptJava多线程.pptvJava多线程.pptJava多线程.pptJava多线程.pptJava多线程.ppt
多线程启动.java多线程启动.java多线程启动.java多线程启动.java
大漠车间 多线程范例 大漠实现多绑定窗口多线程同时进行
基于SpringBoot和POI实现单线程和多线程导出Excel.zip基于SpringBoot和POI实现单线程和多线程导出Excel.zip基于SpringBoot和POI实现单线程和多线程导出Excel.zip基于SpringBoot和POI实现单线程和多线程导出Excel.zip...
Linux系统下的多线程编程入门.pdf Linux系统下的多线程编程入门.pdf Linux系统下的多线程编程入门.pdf Linux系统下的多线程编程入门.pdf Linux系统下的多线程编程入门.pdf Linux系统下的多线程编程入门.pdf Linux...
C++_p2p实现多线程文件传输.docC++_p2p实现多线程文件传输.docC++_p2p实现多线程文件传输.docC++_p2p实现多线程文件传输.docC++_p2p实现多线程文件传输.docC++_p2p实现多线程文件传输.docC++_p2p实现多线程文件传输....
用VB6折腾了很久,很难实现多文件同时下载,虽然也说VB6支持异步操作,但是不能真正的多个文件同时下载,也就是说实现不了真正意义上的多线程同时工作,用Inet控件观察了好久,总是一个一个的下载。无奈之下,只好...
密探ftp,多线程ftp.zip密探ftp,多线程ftp.zip密探ftp,多线程ftp.zip密探ftp,多线程ftp.zip密探ftp,多线程ftp.zip密探ftp,多线程ftp.zip密探ftp,多线程ftp.zip密探ftp,多线程ftp.zip密探ftp,多线程ftp.zip...
# 多线程.js//线程暂停//线程停止//定义一个线程//线程开始执行//等待线程执行完闭。
C#多线程互斥实例 多线程获取同一变量(不重复)。是一个很好的学习例子
该文档是笔者在学习李刚老师《Java疯狂讲义》中有关多线程的用法而总结出来的笔记,其中主要的内容包括线程创建和启动、线程的生命周期、控制线程、线程同步、线程通信线程池等基本内容。对Java多线程有详细的介绍。...
Win32多线程程序设计.pdf(带目录)Win32多线程程序设计.pdf(带目录)Win32多线程程序设计.pdf(带目录)Win32多线程程序设计.pdf(带目录)Win32多线程程序设计.pdf(带目录)Win32多线程程序设计.pdf(带目录)...
使用同步器作为多线程中级教材,主要是对上一套初级教程做一个简单的总结, 并且对接下来脚本的线程处理,及监控线程起到一个较高的实际认知。 对多线程基 础及后续多线程课程有承前启后的作用 主要学习内容: 1....
用JAVA写一个多线程程序,如写四个线程,二个加1,二个对一个变量减一,输出
虽然执行线程给人一种几个事件同时发生的感觉,但这只是一种错觉,因为我们的计算机在任何给定的时刻只能执行那些线程中的一个。为了建立这些线程正在同步执行的感觉,Java虚拟机快速地把控制从一个线程切换到另一个...
模拟了一个16个摄像机的场景,有不开多线程和打开多线程的对比。 可以明显感觉到打开多线程后主界面不卡了。 只是个多线程的小例子,还有很多不足之处,有待各位完善。 注意:pro文件中的include和lib文件目录需要...
Python多线程编程.zipPython多线程编程.zipPython多线程编程.zipPython多线程编程.zipPython多线程编程.zipPython多线程编程.zipPython多线程编程.zipPython多线程编程.zipPython多线程编程.zip 运行python的时候,...
深入浅出 Java 多线程.pdf
串口通信的实现,编程环境为C#,实现技术采用了多线程方式