preemtive의 경우 p1이 쓰고 있다가 더 짧은 p2가 내어주는 p2가 등장하니 cpu를 내준다. 그러나 p1은 이미 2초를 썼으므로 남은 시간이 5초가 되고 이 5초를 기준으로 나머지 프로세스와 비교하여 다시 스케줄링을 한다. 새로운 프로세스가 도착하면 새로운 스케줄링이 일어난다.
그러나 SJF는 극단적으로 CPU 사용시간이 짧은 프로세스를 쓰므로 사용시간이 긴 프로세스는 사용시간이 짧은 프로세스가 도착할 때 마다 기다릴 수 밖에 없고, 무한정 기다리는 상태가 될 수 있다. 이를 starvation(기아현상)이라 한다. 따라서 긴 프로세스가 아사할 수 있는 것이 sjf의 첫 문제점이다.
또 프로그램의 사용시간을 알 수 없다는 점도 sjf의 문제이다. 짧은 프로세스가 들어올 때 마다 계속 스케줄링이 되므로 얼마나 프로세스가 cpu를 쓰고 나갈지를 모르기 때문이다.