声明一个共享数组,起两个线程,两个线程每隔一段时间(可以是以个随机数),给数组中添加元素,每一条线程为数组添加3个数据即可。
- package cn.itcast.Thread;
- import java.util.Random;
- import java.util.concurrent.Executors;
- import java.util.concurrent.TimeUnit;
- /*
- * 定义一个共享数组,其两个线程,两个元素每隔一段时间分别向这个数组中添加元素(时间可以是随机的),每一条线程给数组添加3个元素即可。
- * 思路:
- * 1.使用线程池newScheduledThreadPool()
- * 2.设置数组
- */
- public class ThreadPool {
- public static void main(String[] args) {
- // 定义一个线程池,初始线程2条
- Executors.newScheduledThreadPool(2).scheduleAtFixedRate(new Runnable(){
- public void run(){
- addElements();
- printArray();
- System.out.println();
- }
- },
- 0,
- new Random().nextInt(2)+1,
- TimeUnit.SECONDS);
-
- }
- //定义数组因为是同一个数组,必须是成员变量
- static int[]arr=new int[51];
- static int index=0;
- //
- public static void addElements(){
- //每条线程都是添加3个元素
- for(int i=1;i<=3;i++){
- arr[index++]=new Random().nextInt(20)+1;
- }
- }
- public static void printArray(){
- System.out.print(Thread.currentThread().getName());
- for(int i=0;i<arr.length;i++){
- System.out.print(arr[i]+" ");
- }
- }
- }
复制代码
关于线程池的问题,声明共享数组,这样做对吗?数组加静态可以吗?线程池里的俩个线程能实现同步吗?求大神指点!
|
|