java1.5之後追加了一個并發通路的程式包: java.util.concurrent。對于此線程池操作的核心類和接口就定義在此包中。
這裡有2個核心的接口:
1、普通的執行線程池定義: java.util.concurrent.ExecutorService;
2、排程線程池:java.util.concurrent.ScheduledExecutorService;
一般可以使用 java.util.concurrent.Executors類完成線程池的建立
3、建立無大小限制的線程池: java.util.concurrent.ExecutorService newCachedThreadPool();
4、建立固定大小的線程池:java.util.concurrent.ExecutorService newFixedThreadPool(int nThreads);
5、建立單線程池:java.util.concurrent.ExecutorService newSingleThreadScheduledExecutor();
6、建立定時排程池:newScheduledThreadPool()
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import org.junit.Test;
public class testThreadPool {
@Test
public void test1() {
//建立一個線程池的模型
//ExecutorService executorService = Executors.newCachedThreadPool(); //建立無大小限制的線程池
ExecutorService executorService = Executors.newFixedThreadPool(3); //建立固定大小的線程池
for(int x=0;x<10;x++){
final int index=x;
executorService.submit(new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+", x="+index);
}
});
}
executorService.shutdown();
}
public static void main(String[] args) {
ScheduledExecutorService executorService = Executors.newScheduledThreadPool(1); //建立定時排程池
for(int x=0;x<10;x++){
final int index=x;
executorService.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+", x="+index);
}
}, 3, 2, TimeUnit.SECONDS);
}
}
}