2020. 9. 28. 12:41ㆍ개인공부/java
14. 자바 Concurrent 프로그래밍 소개
Concurrent 소프트웨어
● 동시에여러작업을할수있는소프트웨어
● 예)웹브라우저로유튜브를보면서키보드로문서에타이핑을할수있다.
● 예)녹화를하면서인텔리J로코딩을하고워드에적어둔문서를보거나수정할수있다.
자바에서 지원하는 컨커런트 프로그래밍 ● 멀티프로세싱 (ProcessBuilder)
● 멀티쓰레드
자바 멀티쓰레드 프로그래밍
● Thread / Runnable Thread 상속
public static void main(String[] args) {
HelloThread helloThread = new HelloThread();
helloThread.start();
System.out.println("hello : " + Thread.currentThread().getName());
}
static class HelloThread extends Thread { @Override
public void run() {
System.out.println("world : " + Thread.currentThread().getName());
} }
Runnable 구현 또는 람다
쓰레드 주요 기능
-
● 현재 쓰레드 멈춰두기 (sleep): 다른 쓰레드가 처리할 수 있도록 기회를 주지만 그렇다고
락을 놔주진 않는다. (잘못하면 데드락 걸릴 수 있겠죠.)
-
● 다른 쓰레드 깨우기 (interupt): 다른 쓰레드를 깨워서 interruptedExeption을 발생 시킨다.
그 에러가 발생했을 때 할 일은 코딩하기 나름. 종료 시킬 수도 있고 계속 하던 일 할 수도
있고.
-
● 다른 쓰레드 기다리기 (join): 다른 쓰레드가 끝날 때까지 기다린다.
참고:
Thread thread = new Thread(() -> System.out.println("world : " + Thread.currentThread().getName())); thread.start();
System.out.println("hello : " + Thread.currentThread().getName());
● https://docs.oracle.com/javase/tutorial/essential/concurrency/
● https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html#interrupt--
'개인공부 > java' 카테고리의 다른 글
자바의 정석 - Chapter 01 자바를 시작하기 전에 (0) | 2020.11.16 |
---|---|
Java - Executors (0) | 2020.09.28 |
Java - Date와 Time Api (0) | 2020.09.27 |
JAVA - stream (0) | 2020.09.27 |
JAVA - 함수형 인터페이스 (0) | 2020.09.26 |