Sun在Java
有關Java
當然新特征對做多線程程序沒有必須的關系
線程池的基本思想還是一種對象池的思想
在Java
Java
在使用線程池之前
一
import ncurrent
import ncurrent
/**
* Java線程
*
* @author Administrator
*/
public class Test {
public static void main(String[] args) {
//創建一個可重用固定線程數的線程池
ExecutorService pool = Executors
//創建實現了Runnable接口對象
Thread t
Thread t
Thread t
Thread t
Thread t
//將線程放入池中進行執行
pool
pool
pool
pool
pool
//關閉線程池
pool
}
}
class MyThread extends Thread{
@Override
public void run() {
System
}
}
pool
pool
pool
pool
pool
Process finished with exit code
二
在上例的基礎上改一行創建pool對象的代碼為
//創建一個使用單個 worker 線程的 Executor
ExecutorService pool = Executors
輸出結果為
pool
pool
pool
pool
pool
Process finished with exit code
對於以上兩種連接池
一旦池中有線程完畢
三
與上面的類似
//創建一個可根據需要創建新線程的線程池
ExecutorService pool = Executors
pool
pool
pool
pool
pool
Process finished with exit code
四
import ncurrent
import ncurrent
import ncurrent
/**
* Java線程
*
* @author Administrator
*/
public class Test {
public static void main(String[] args) {
//創建一個線程池
ScheduledExecutorService pool = Executors
//創建實現了Runnable接口對象
Thread t
Thread t
Thread t
Thread t
Thread t
//將線程放入池中進行執行
pool
pool
pool
//使用延遲執行風格的方法
pool
pool
//關閉線程池
pool
}
}
class MyThread extends Thread {
@Override
public void run() {
System
}
}
pool
pool
pool
pool
pool
Process finished with exit code
五
在四代碼基礎上
//創建一個單線程執行程序
ScheduledExecutorService pool = Executors
pool
pool
pool
pool
pool
Process finished with exit code
六
import ncurrent
import ncurrent
import ncurrent
import ncurrent
/**
* Java線程
*
* @author Administrator
*/
public class Test {
public static void main(String[] args) {
//創建等待隊列
BlockingQueue<Runnable> bqueue = new ArrayBlockingQueue<Runnable>(
//創建一個單線程執行程序
ThreadPoolExecutor pool = new ThreadPoolExecutor(
//創建實現了Runnable接口對象
Thread t
Thread t
Thread t
Thread t
Thread t
Thread t
Thread t
//將線程放入池中進行執行
pool
pool
pool
pool
pool
pool
pool
//關閉線程池
pool
}
}
class MyThread extends Thread {
@Override
public void run() {
System
try {
Thread
} catch (InterruptedException e) {
e
}
}
}
pool
pool
pool
pool
pool
pool
pool
Process finished with exit code
創建自定義線程池的構造方法很多
ThreadPoolExecutor
public ThreadPoolExecutor(int corePoolSize
- 用給定的初始參數和默認的線程工廠及處理程序創建新的 ThreadPoolExecutor
使用 Executors
工廠方法之一比使用此通用構造方法方便得多
- 參數
corePoolSize
池中所保存的線程數 包括空閒線程 maximumPoolSize
池中允許的最大線程數 keepAliveTime
當線程數大於核心時 此為終止前多余的空閒線程等待新任務的最長時間 unit
keepAliveTime 參數的時間單位 workQueue
執行前用於保持任務的隊列 此隊列僅保持由 execute 方法提交的 Runnable 任務 - 拋出
IllegalArgumentException
如果 corePoolSize 或 keepAliveTime 小於零 或者 maximumPoolSize 小於或等於零 或者 corePoolSize 大於 maximumPoolSize NullPointerException
如果 workQueue 為 null
- 參數
自定義連接池稍微麻煩些
有關Java
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26769.html