● Thread pool 기반
●singleThreadExecutor
package org.example;
import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Main4 {
public static void main(String[] args) {
ExecutorService es = Executors.newSingleThreadExecutor();
es.submit(() -> {
int n1 = 10;
int n2 = 20;
System.out.println(Thread.currentThread().getName()+" "+(n1+n2));
} );
System.out.println("main thread 종료");
es.shutdown();
}
}
singleThreadExecutor 는 thread를 한개씩 진행하고 끝나야 다음 thread를 진행한다.
●FixedThreadPool
package org.example;
import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Main5 {
public static void main(String[] args) {
Runnable ran1 = () -> {
for (int i = 0; i < 1000; i++) {
System.out.println(Thread.currentThread().getName()+"A쓰레드" + i);
}
};
Runnable ran2 = () -> {
for (int i = 0; i < 1000; i++) {
System.out.println(Thread.currentThread().getName()+"B쓰레드"+i);
}
};
ExecutorService es = Executors.newFixedThreadPool(2);
es.submit(ran1);
es.submit(ran2);
es.submit(() -> {
for (int i = 0; i < 1000; i++) {
System.out.println(Thread.currentThread().getName()+"C쓰레드");
}
} );
es.shutdown();
}
}
2개의 쓰레드를 사용한다.
●Callable & Future
package org.example;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Main6 {
public static void main(String[] args) throws ExecutionException, InterruptedException {
Callable<Integer> task = () -> {
int sum = 0;
for (int i = 0; i < 10; i++) {
sum += i;
}
return sum;
};
ExecutorService es = Executors.newSingleThreadExecutor();
int sum = es.submit(task).get();
System.out.println("sum="+sum);
es.shutdown();
}
}
이렇게 제네릭을 사용해서 callable 을 이용해 sum값을 구할 수 있다.
'java' 카테고리의 다른 글
jar -> war 로 tomcat 을 이용 (0) | 2024.03.28 |
---|---|
GitHub sourceTree Token (0) | 2024.03.21 |
Thread 이해 와 생성 (0) | 2024.02.21 |
파일 시스템(NIO) (0) | 2024.02.20 |
문자 스트림 (0) | 2024.02.19 |