플밍언어 13.concurrency

ttomy·2022년 6월 7일
0

프로그래밍 언어

목록 보기
7/11

intro

lwp:light weight process-> 쓰레드
hwp: 프로세스

동기화:competition, cooperation

  • 배타적 사용:lock,unlock

13.7 java threads

쓰레드의 run메소드를 구현.
일반 프로그램의 main과 같음.

쓰레드를 만드는 2방법

  • 쓰레드 클래스를 상속받아 인스턴스 생성-run을 override
  • runnable이라는 인터페이스

thread클래스에 있는 start()메소드를 실행해 시작.
쓰레드는 run이 끝나면 종료됨.

runnable 인터페이스를 구현할 떄는 다중상속의 느낌.

코어가 여러개 일떄는 main에서 쓰레드 여러개 만들고
최종결과를 내기 위해서는 쓰레드가 모두 끝날 떄까지 기다려야 함.
쓰레드의 작업을 기다리는 메소드->join().

쓰레드가 문제가 생겨서 안 끝날 때가 있다.
그래서 기다릴 떄에는 timeout을 걸어준다.
ex)myTh.join(2000);

13.7.4 competiotion 동기화

modifier: 앞에 붙어 특성을 한정짔는 것,ex)접근 제어자.final,abstract...synchronized

synchronized는 붙으면 그 메소드가 배타적으로 실행된다.
공유변수가 순차적,배타적으로 처리된다.

ex)600p queue클래스.
deposit으로 쓰고,fetch로 읽기.
notifyAll()-> wait()하는 것을 깨워주겠다.
notify하면 하나만 깨워줌.->어떤 것이 깨워질지는 랜덤.

producer,comsummer 문제.
생산자는 메모리에 데이터를 생성,consumer는 메모리의 데이터를 가져옴,수정 등.
이런 형태는 pipeline형태이다. 앞 공정의 output의 다음 공정의 입력이 된다. unix의 pipe명령이다.

객체지향에서는 전역변수를 없애고 이를 관장하는 클래스를 만들어 메소드로 관리하겠다는 것이다.

602p
runnable만 구현하면 thread의 메소드를 사용할 수 없다. 때문에 thread에 구현한 것(producer)를 인자로 넘겨준다.

14. exception,event handling

intro

exception handling:예외처리
예외,에러가 발생하면 abort,강제종료한다.

0개의 댓글