자바 병렬 프로 그래 밍 (15) 스 레 드 탱크
3543 단어 JavaConcurrency
package com.dason.juc2;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
/*
* 、 : , 。 , 。
*
* 、 :
* java.util.concurrent.Executor :
* |--**ExecutorService :
* |--ThreadPoolExecutor
* |--ScheduledExecutorService :
* |--ScheduledThreadPoolExecutor : ThreadPoolExecutor, ScheduledExecutorService
*
* 、 : Executors
* ExecutorService newFixedThreadPool() :
* ExecutorService newCachedThreadPool() : , , 。
* ExecutorService newSingleThreadExecutor() : 。
*
* ScheduledExecutorService newScheduledThreadPool() : , 。
*/
public class TestThreadPool {
public static void main(String[] args) throws Exception {
// //1.
ExecutorService pool = Executors.newFixedThreadPool(5);
// ThreadPoolDemo tpd = new ThreadPoolDemo();
//
// //2.
// for (int i = 0; i < 10; i++) {
// pool.submit(tpd);
// }
//
// //3.
// pool.shutdown();
List> list = new ArrayList<>();
for (int i = 0; i < 10; i++) {
Future future = pool.submit(new Callable(){
@Override
public Integer call() throws Exception {
int sum = 0;
for (int i = 0; i <= 100; i++) {
sum += i;
}
return sum;
}
});
list.add(future);
}
pool.shutdown();
for (Future future : list) {
System.out.println(future.get());
}
}
}
class ThreadPoolDemo implements Runnable{
private int i = 0;
@Override
public void run() {
while(i <= 100){
System.out.println(Thread.currentThread().getName() + " : " + i++);
}
}
}
package com.dason.juc2;
import java.util.Random;
import java.util.concurrent.Callable;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
/*
* 、 : , 。 , 。
*
* 、 :
* java.util.concurrent.Executor :
* |--**ExecutorService :
* |--ThreadPoolExecutor
* |--ScheduledExecutorService :
* |--ScheduledThreadPoolExecutor : ThreadPoolExecutor, ScheduledExecutorService
*
* 、 : Executors
* ExecutorService newFixedThreadPool() :
* ExecutorService newCachedThreadPool() : , , 。
* ExecutorService newSingleThreadExecutor() : 。
*
* ScheduledExecutorService newScheduledThreadPool() : , 。
*/
public class TestScheduledThreadPool {
public static void main(String[] args) throws Exception {
ScheduledExecutorService pool = Executors.newScheduledThreadPool(5);
for (int i = 0; i < 5; i++) {
Future result = pool.schedule(new Callable(){
@Override
public Integer call() throws Exception {
int num = new Random().nextInt(100);//
System.out.println(Thread.currentThread().getName() + " : " + num);
return num;
}
}, 1, TimeUnit.SECONDS);
System.out.println(result.get());
}
pool.shutdown();
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.