import java.util.Random;
/***
* 开启两个线程每隔一段时间分别向一个共享数组中添加元素,每个线程添加3个即可。
*
*/
public class ShareDemo {
// 共享数组
private String[] shareArray = new String[6];
// 数组当前下标
private int currentIndex = 0;
/*********** 线程实现 ****************/
// 往数组中存数据的线程
public class MyThread extends Thread {
MyThread(String name) {
super(name);
}
@Override
public void run() {
for (int i = 0; i < 3; i++) {
synchronized (shareArray.getClass()) {
// 往数组中添加数据
shareArray[currentIndex++] = Thread.currentThread()
.getName() + "存入:" + new Random().nextInt(10);
}
try {
// 存一个休眠一秒
this.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
ShareDemo demo = new ShareDemo();
// 实例化两个线程添加元素
MyThread t1 = demo.new MyThread("线程1");
MyThread t2 = demo.new MyThread("线程2");
// 启动线程
t1.start();
t2.start();
try {
// 加入线程(保证子线程能够充分执行)
t1.join();
t2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
// 遍历集合
for (int i = 0; i < demo.shareArray.length; i++) {
System.out.println(demo.shareArray[i]);
}
}
} |
|