Thread Scheduler

이식성 좋은 프로그램을 작성하는 방법

실행 가능한 스레드의 평균적인 수를 프로세서 수보다 지나치게 많아지지 않도록 하자

전체 스레드수 = 대기중인 스레드수(실행 가능하지 않은 스레드 수) + 실행중인 스레드 수

실행가능한 스레드 수를 적게 유지하기

스레드는 당장 처리해야 할 작업이 없다면 실행되어서는 안된다.

각 스레드가 무언가 유용한 작업을 완료한 후에는 다음 일거리가 생길 때까지 대기하도록 하는 것

ex) 스레드 풀 크기를 적절히 설정하고, 작업은 짧게 유지 (작업 분배가 성능을 떨어뜨릴 수도 있음)

스레드는 절대 바쁜 대기(busy waiting) 상태가 되면 안됨

=> 공유 객체의 상태가 바뀔때까지 쉬지 않고 검사해서는 안된다.

하나의 스레드가 필요도 없이 실행가능한 상태인 시스템은 성능과 이식성이 떨어질 수 있다.

이식성이 나쁜 코드

Thread.yield