흑마 프로그램--java 스레드 탱크
3852 단어 java 스레드 풀
하나의 스레드 탱크를 배치하는 것은 비교적 복잡하다. 특히 스레드 탱크의 원리에 대해 잘 알지 못하는 상황에서 설정할 수 있는 스레드 탱크가 비교적 좋지 않기 때문에Executors류에 정적 공장을 제공하여 자주 사용하는 스레드 탱크를 생성한다.
4
4
4
4
4
public class ExecutorsTest {
public static void main(String[] args) {
//ExecutorService e=Executors.newFixedThreadPool(5);// ,
//ExecutorService e=Executors.newSingleThreadExecutor();//
ExecutorService e=Executors.newCachedThreadPool();// ,
Executors.newScheduledThreadPool(3).schedule( new Runnable() {// , 10
@Override
public void run() {
System.err.println("botom");
}
}, 10, TimeUnit.SECONDS);//TimeUnit.SECONDS
Executors.newScheduledThreadPool(3).scheduleAtFixedRate(new Runnable() {// , 6 , 2
@Override
public void run() {
System.err.println("botom");
}
}, 6, 2, TimeUnit.SECONDS);
for (int i = 1; i < 10; i++) {
final int taskCount=i;
e.execute(new Runnable() {// runable
@Override
public void run() {
for (int i = 1; i < 10; i++) {
System.out.println(Thread.currentThread().getName()+" loop for " +taskCount);
}
}
});
}
e.shutdown();//
}
}
참고: Executor의 excute 방법과submit 방법의 차이점
execute: 되돌아오는 파라미터가 없는 라인을 실행합니다
submit: 되돌아오는 형식의 라인을 실행합니다
예:
Future<String> f=e.submit(new Callable<String>() {//submit Future ,Future Callable
@Override
public String call() throws Exception {
Thread.sleep(200);
// TODO Auto-generated method stub
return "hello";
}
});
try {
System.out.println(" :"+f.get());//get() , ,get(long timeout, TimeUnit unit), ,
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (ExecutionException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}