死锁:多个线程相互等待对方释放资源,导致所有线程无法继续执行。
饥饿:某些线程始终无法获取到所需资源,导致无法继续执行。
虚假唤醒:某些线程在没有被通知的情况下被唤醒,导致程序出现逻辑错误。
等待超时:线程等待的时间过长,导致程序执行效率低下。
竞态条件:多个线程同时访问共享资源,导致数据出现错误。
不恰当的等待/通知机制使用:使用wait()和notify()时没有正确的同步机制,导致程序出现错误。