Discuss / Java / 注意一点就好了,添加任务是一个线程,获取任务是五个线程,这些线程哪个获取到执行权都是不一定的。

注意一点就好了,添加任务是一个线程,获取任务是五个线程,这些线程哪个获取到执行权都是不一定的。

Topic source

Loading...

#1 Created at ... [Delete] [Delete and Lock User]

廖大整了五个线程用来获取并打印所有任务,当任务队列为空时,当前获取任务的线程被挂起并释放锁。添加任务的线程就会拿到锁执行添加操作。

s = taskQueue.getTask();

添加完以后又会唤醒所有等待获取任务的线程。也有可能会出现添加任务的线程一直拿到锁,添加完所有任务后,获取任务的五个线程才去抢占锁。反正各种情况都有。

taskQueue.addTask(s);

第一次看这块的时候就感觉很绕,现在感觉好点了^^


  • 1

Reply