Java 多个线程在同一对象上等待同步时的事件顺序

Java 多个线程在同一对象上等待同步时的事件顺序,java,Java,如果我有一个公共线程池,它对可运行任务进行排队,并且每次可运行任务都是同一个对象 当它到达具有同步锁的代码块(在可运行任务中)时会发生什么?假设5个线程在同一个锁上等待 当它解锁时,同步块是一条等待执行的队列,新线程加入队列,还是谁先抓住了块 如果没有队列,假设我想要有序执行,那么最好的方法是什么?同步块没有任何定义的顺序。您可以将java.util.concurrent.locks.ReentrantLock与“公平”锁定一起使用,以实现与同步块相同的效果,但具有保证的顺序。同步块没有任何定义

如果我有一个公共线程池,它对可运行任务进行排队,并且每次可运行任务都是同一个对象

当它到达具有同步锁的代码块(在可运行任务中)时会发生什么?假设5个线程在同一个锁上等待

当它解锁时,同步块是一条等待执行的队列,新线程加入队列,还是谁先抓住了块


如果没有队列,假设我想要有序执行,那么最好的方法是什么?

同步块没有任何定义的顺序。您可以将
java.util.concurrent.locks.ReentrantLock
与“公平”锁定一起使用,以实现与同步块相同的效果,但具有保证的顺序。

同步块没有任何定义的顺序。您可以将
java.util.concurrent.locks.ReentrantLock
与“公平”锁定一起使用,以获得与同步块相同的效果,但具有保证的顺序。

很酷。谢谢你的提醒。下面是我为其他有同样问题的人找到的更多信息。酷。谢谢你的提醒。下面是我为其他有同样问题的人找到的更多信息。