synchronized是公平锁,不会产生线程极饿现象
时间: 2023-04-08 08:00:54 浏览: 84
可以回答这个问题。synchronized是一种可重入锁,它可以保证同一时刻只有一个线程可以进入临界区,从而保证线程安全。但是,synchronized并不是公平锁,它并不能保证线程获取锁的顺序是公平的,可能会导致某些线程一直无法获取到锁,产生线程饥饿现象。
相关问题
synchronized是公平锁吗
synchronized关键字可以是公平锁,也可以是非公平锁。默认情况下,synchronized是非公平锁。
在Java5之前,synchronized是非公平锁,它不考虑等待时间和先后顺序,而是通过竞争锁的方式来实现同步。这种方式可能导致某些线程长时间等待锁,而其他线程却可以优先获得锁。
在Java5之后,synchronized提供了一种公平锁的实现方式,即使用ReentrantLock类中的fair参数来控制锁的公平性。当fair参数为true时,锁的获取将遵循先进先出的原则,即等待时间最长的线程将优先获得锁。这样可以避免某些线程长时间等待锁的情况。
总之,synchronized可以是公平锁也可以是非公平锁,具体取决于实现方式。
synchronized是公平锁码
不完全正确。synchronized是一种可重入锁,它可以保证同一个线程多次获取锁不会发生死锁。而synchronized默认情况下是非公平锁,即当多个线程同时请求锁时,锁将会随机分配给其中一个线程,而不考虑这些线程的请求顺序。这种非公平的锁分配方式可能会导致某些线程长期得不到锁,从而造成线程饥饿问题。但是在Java 5之后,synchronized提供了一种公平锁的实现方式,即在获取锁时按照请求的顺序进行分配,从而避免了线程饥饿问题。可以通过在synchronized关键字后面加上"fair"来创建一个公平锁。