因为锁只能保证同一时刻只有一个线程进入临界区,但是并不能保证两个线程交替执行。在第一个线程释放锁之后,第二个线程还需要竞争锁才能进入临界区执行。如果第二个线程没有竞争到锁,就会一直等待,导致只有一个线程在执行。可能是因为第一个线程先启动并且运行速度较快,导致第二个线程竞争锁失败。可以通过使用Condition来实现更精细的线程控制,让两个线程轮流执行。

下面这段代码为什么只有林一线程执行明明把锁释放了啊public class test02 public static void mainString args water water = new water; new Thread- for int i = 0; i 40; i++ waterdrink;

原文地址: https://www.cveoy.top/t/topic/bLlv 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录