建议我任何实时情况下,我应该创建多个线程,然后介绍一个死锁situation.this是一种项目!你能帮助应用程序对一些实时情况更感兴趣吗?
发布于 2009-07-07 10:59:48
想想哲学家,金叉子和一大碗意大利面
发布于 2009-07-07 11:08:35
这将导致死锁:
public static void main(String[] args)
{
final Object object1 = new Object();
final Object object2 = new Object();
Thread thread1 = new Thread(
new Runnable()
{
public void run()
{
try
{
//**** Lock on object1 first ****
synchronized(object1)
{
Thread.sleep(1000);
//**** Lock on object2 second ****
synchronized(object2)
{
System.out.println("Should never get here.");
}
}
}
catch (InterruptedException e)
{
System.out.println("Thread interupted.");
}
}
}
);
Thread thread2 = new Thread(
new Runnable()
{
public void run()
{
try
{
//**** Lock on object2 first ****
synchronized(object2)
{
Thread.sleep(1000);
//**** Lock on object1 second ****
synchronized(object1)
{
System.out.println("Should never get here.");
}
}
}
catch (InterruptedException e)
{
System.out.println("Thread interupted.");
}
}
}
);
thread1.start();
thread2.start();
}基本上,你有两个线程竞争同一个对象上的锁。线程1获得了object1上的锁,而线程2获得了object2上的锁,然后每个线程都试图获得另一个对象上的锁,而你得到了一个死锁,因为另一个线程已经拥有了这个锁。
发布于 2009-07-07 11:03:22
您可以使用生产者-消费者算法来演示多线程。
报告生成器场景是,每个报告的数据被插入到一个队列中,以便由一个服务(生产者)进一步处理。报表处理器服务(使用者)从队列中获取报表的数据,并一次处理一个报表。报表处理器服务可以有5个不同的实例。它们都使用来自单个队列的报告(这是您可能需要在队列上引入锁的地方,等等)。
https://stackoverflow.com/questions/1091655
复制相似问题