线程池技术的应用
JDK1.5以后的版本中提供了线程池技术非常方便了应用程序开发者对多线程的管理,举例如下:
1. 创建一个普通线程,但不调用start()方法启动它,而是交给线程池去管理,减少启动线程带来的开销
Thread thread =
new Thread("BrowserMenuVisibilityThread-" + ++threadIndex_
) {
@SuppressWarnings("synthetic-access"
)
@Override
public void run() {
try
{
sleep(1000);
reevaluateMenuImmediately();
}
catch (Throwable ex) {
logger_.error("CAUGHT EXCEPTION", ex);
}
}
};
ThreadPoolManager.getInstance().execute(thread);
2. 线程池管理器
private ThreadPoolManager(){
threadPool = new ThreadPoolExecutor(5, 8, 10,
TimeUnit.
SECONDS, new ArrayBlockingQueue<Runnable>(5),
new ThreadPoolExecutor.DiscardOldestPolicy());
}
public void execute(Thread task){
threadPool.execute(task);
}
JDK1.5以后的版本中提供了线程池技术非常方便了应用程序开发者对多线程的管理,举例如下:
1. 创建一个普通线程,但不调用start()方法启动它,而是交给线程池去管理,减少启动线程带来的开销
Thread thread =
new Thread("BrowserMenuVisibilityThread-" + ++threadIndex_
) {
@SuppressWarnings("synthetic-access"
)
@Override
public void run() {
try
{
sleep(1000);
reevaluateMenuImmediately();
}
catch (Throwable ex) {
logger_.error("CAUGHT EXCEPTION", ex);
}
}
};
ThreadPoolManager.getInstance().execute(thread);
2. 线程池管理器
private ThreadPoolManager(){
threadPool = new ThreadPoolExecutor(5, 8, 10,
TimeUnit.
SECONDS, new ArrayBlockingQueue<Runnable>(5),
new ThreadPoolExecutor.DiscardOldestPolicy());
}
public void execute(Thread task){
threadPool.execute(task);
}