Professional Documents
Culture Documents
열혈 Java Chapter 34
열혈 Java Chapter 34
class CurrentThreadName {
public static void main(String[] args) {
Thread ct = Thread.currentThread();
String name = ct.getName(); // 쓰레드의 이름을 반환
System.out.println(name);
}
}
쓰레드를 생성하는 방법
public static void main(String[] args) {
Runnable task = () -> { // 쓰레드가 실행하게 할 내용
int n1 = 10;
int n2 = 20;
String name = Thread.currentThread().getName();
System.out.println(name + ": " + (n1 + n2)); 모든 쓰레드가 일을 마쳐야 프로그램 종료
};
public void increment() { public static void main(String[] args) throws InterruptedException {
count++; // 첫 번째 쓰레드에 의해 실행 Runnable task1 = () -> {
} for(int i = 0; i < 1000; i++)
public void decrement() { cnt.increment(); // 값을 1 증가
count--; // 또 다른 쓰레드에 의해 실행 };
}
public int getCount() { return count; } Runnable task2 = () -> {
} for(int i = 0; i < 1000; i++)
cnt.decrement(); // 값을 1 감소
};
Thread t1 = new Thread(task1);
Thread t2 = new Thread(task2);
t1.start();
t2.start();
t1.join(); // t1 이 참조하는 쓰레드의 종료를 기다림
t2.join(); // t2 가 참조하는 쓰레드의 종료를 기다림
System.out.println(cnt.getCount());
}
}
동일한 메모리 공간에 접근하는 것이 왜 문제가 되는가 ?
값을 증가시키는 방식
• newFixedThreadPool
• newCachedThreadPool
exr.shutdown();
}
Callable & Future
exr.shutdown();
exr.awaitTermination(100, TimeUnit.SECONDS);
System.out.println(lst);
}
}
Chapter 34 의 강의를 마칩니다 .