java5编程(7)java5线程并发库的应用 (一)

2014-11-24 07:45:55 · 作者: · 浏览: 0

[java] package com.itm.thread;
package com.itm.thread;[java]
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;

/********
*
* 每次 只有 三个 任务 被线程 拿去服务了。
* @author wang.dm
*
*/
public class ThreadPoolTest {

/**
* @param args
*/
public static void main(String[] args) {
// 创建 3 个 线程池。
// 返回值:ExecutorService ThreadPool
ExecutorService ThreadPool = Executors.newFixedThreadPool(3);

for(int i=1;i<=10;i++){ // 循环 10遍 池子里扔进10个任务。
final int task = i;
ThreadPool.execute(new Runnable(){// 往池子 里面 扔进一个任务。
@Override
public void run() {
for(int j=1;j<=10;j++){ // 每个任务 执行10次。
try {
Thread.sleep(20);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + " is looping of " + j + "for task " + task);
}
}
});
}
System.out.println("all of 10 tasks have commited ! ");
// ThreadPool.shutdownNow();

// 定时器:
Executors.newScheduledThreadPool(3).schedule(new Runnable(){
@Override
public void run() {
System.out.println(" boming ");
}
}, 10, TimeUnit.SECONDS);

// 定时器:6秒之后炸 每隔2秒 再炸。
Executors.newScheduledThreadPool(3).scheduleAtFixedRate(new Runnable(){
@Override
public void run() {
System.out.println(" boming ");
}
}, 6, 2, TimeUnit.SECONDS);
}

}
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;

/********
*
* 每次 只有 三个 任务 被线程 拿去服务了。
* @author wang.dm
*
*/
public class ThreadPoolTest {

/**
* @param args
*/
public static void main(String[] args) {
// 创建 3 个 线程池。
// 返回值:ExecutorService ThreadPool
ExecutorService ThreadPool = Executors.newFixedThreadPool(3);

for(int i=1;i<=10;i++){ // 循环 10遍 池子里扔进10个任务。
final int task = i;
ThreadPool.execute(new Runnable(){// 往池子 里面 扔进一个任务。
@Override
public void run() {
for(int j=1;j<=10;j++){ // 每个任务 执行10次。
try {
Thread.sleep(20);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + " is looping of " + j + "for task " + task);
}
}
});
}
System.out.println("all of 10 tasks have commited ! ");
// ThreadPool.shutdownNow();

// 定时器:
Executors.newScheduledThreadPool(3).schedule(new Runnable(){
@Override
public void run() {
System.out.println(" boming ");
}
}, 10, TimeUnit.SECONDS);

// 定时器:6秒之后炸 每隔2秒 再炸。
Executors.newScheduledThreadPool(3).scheduleAtFixedRate(new Runnable(){
@Override
public void run() {
System.out.println(" boming ");
}
}, 6, 2, TimeUnit.SECONDS);
}

}


一、简介
线程池类为 java.util.concurrent.ThreadPoolExecutor,常用构造方法为:

ThreadPoolExecutor(int corePoolSize, int maximumPoolSize,
long keepAliveTime, TimeUnit unit,
BlockingQueue workQueue,
RejectedExecutionHandler handler)


corePoolSize: 线程池维护线程的最少数量
maximumPoolSize:线程池