1. 程式人生 > >Java多執行緒之執行緒池(五)

Java多執行緒之執行緒池(五)

本例主要演示如何建立一個用於排程定時任務的執行緒池

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;
}
}