如果我有一个公共线程池,它将可运行的任务排队,并且每次可运行的任务都是同一个对象。
当它到达具有同步锁定的代码块(在可运行任务中)时会发生什么?并说5个线程在同一个锁上等待?
当它解锁时,同步块是等待执行的队列行还是新线程加入队列,或者是谁设法先抢占该块?
如果没有队列行,假设我想要一个有序执行,那么最好的方法是什么?
答案 0 :(得分:1)
synchronized块没有任何已定义的顺序。您可以使用带有“公平”锁定的java.util.concurrent.locks.ReentrantLock
来实现与同步块相同的效果,但保证顺序。