Java多线程之线程池(五)

来源:互联网 发布:氯化钠的提纯实验数据 编辑:程序博客网 时间:2024/04/30 23:15

本例主要演示如何创建一个用于调度定时任务的线程池

package three.day.thread.my;



import java.util.Random;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;


public class ThreadLocalTs {


public static void main(String[] args) {

//创建一个用于调度定时任务的线程池

ScheduledExecutorService service = Executors.newScheduledThreadPool(3);
Runnable command = new Runnable(){
public void run(){
MyData myData = MyData.getMyData();
myData.setY(new Random().nextInt(1000000));
System.out.println(Thread.currentThread().getName() + " = " + myData.getY());
}
};
try {
long initialDelay = 1;
long period = 1;
TimeUnit unit = TimeUnit.SECONDS;
for(int i=0;i<3;i++)
service.scheduleAtFixedRate(command, initialDelay, period, unit);
} catch(Exception e){
service.shutdown();
}


}


}


class MyData{
private static ThreadLocal threadLocal = new ThreadLocal();
private int y;

private MyData(){}

public static MyData getMyData(){
MyData myData = (MyData)threadLocal.get();
if(myData == null){
myData = new MyData();
threadLocal.set(myData);
}
return myData;
}
public void setY(int y){
this.y = y;
}
public int getY(){
return y;
}
}
原创粉丝点击