您的位置:首页 > 编程语言 > Java开发

java中 ExecutorService,Executor,ThreadPoolExecutor的用法

2017-07-10 15:56 169 查看
package com;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

public class demo3 {

public static void main(String[] args) {
// TODO Auto-generated method stub

//test1();
//test2();
test3();
}

static void test1(){
//ExecutorService的用法
ExecutorService fixedThreadPool = Executors.newFixedThreadPool(2);
for( int i=0;i<100;i++){
fixedThreadPool.execute(
new Runnable(){

public void run() {
System.out.println("====threadId="+Thread.currentThread().getId());

}
}
);
}

}

static void test2(){
Executor exec=new ThreadPerTaskExecutor();
exec.execute(new Runnable(){

@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("ccccc"+Thread.currentThread().getId());
}

});

}

//ThreadPoolExecutor
static void test3(){

BlockingQueue<Runnable> queue = new LinkedBlockingQueue<Runnable>();
ThreadPoolExecutor threadPool = new ThreadPoolExecutor(2, 4, 5, TimeUnit.SECONDS,
queue, new ThreadPoolExecutor.AbortPolicy());

for(int i=0;i<100;i++){
threadPool.execute(new MyThread(i+""));
}
threadPool.shutdown();

}

static class MyThread implements Runnable {
private String name;

public MyThread(String name) {
this.name = name;
}

@Override
public void run() {
// 做点事情
try {
Thread.sleep(1000);

System.out.println(name+"===当前线程="+Thread.currentThread().getId() + " finished job!") ;
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

}

//execute的用法
class ThreadPerTaskExecutor implements Executor {
public void execute(Runnable r) {
new Thread(r).start();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: