解决方案 »
- 连接ActiveMQ的JMX问题
- tomcat启动出错Exception starting filter structs2
- win7 下eclipse放在c盘插件不能正常运行
- 请教一个问题${参数} 操作问题
- 我想做个流通图,有没有合适的jquery插件
- AJAX和服务器的问题~
- 刚学ejb报javax.naming.CommunicationException
- 用jsp 如何访问oracle数据库
- asix2 请求超时。求解决思路啊。在线等了
- 请教JAXBContext xml to bean
- JAVA 抢购实现问题 急!!!!!!!!!!!!!!!!
- 求救!关于eclipse-jee-juno-SR2中建立的实体类导出sql语句问题,坐等吖,大神快来~~~!!
public class TestLock
{ //资源A以及锁A
public static String sourceA = "获得资源A"; //资源B以及锁B
public static String sourceB = "获得资源B"; public static void main(String[] args)
{
Thread thread1 = new MyLockThread1();
thread1.setName("thread1");
Thread thread2 = new MyLockThread2();
thread2.setName("thread2");
thread1.start();
thread2.start();
}
}
class MyLockThread1
extends Thread
{ public void run()
{
synchronized (TestLock.sourceA)
{
System.out.println(this.getName()+":"+TestLock.sourceA);
try
{
//停顿5秒获取另一个资源
Thread.sleep(5000);
}
catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(this.getName()+":尝试获取资源B...");
synchronized (TestLock.sourceB)
{
System.out.println(TestLock.sourceB); try
{
//停顿5秒进程结束
Thread.sleep(5000);
}
catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
System.out.println(this.getName()+":走到这里,说明没有发生锁,线程正常结束。");
}
}
class MyLockThread2
extends Thread
{ public void run()
{
synchronized (TestLock.sourceB)
{
System.out.println(this.getName()+":"+TestLock.sourceB);
try
{
//停顿5秒获取另一个资源
Thread.sleep(5000);
}
catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(this.getName()+":尝试获取资源A...");
synchronized (TestLock.sourceA)
{
System.out.println(this.getName()+":"+TestLock.sourceA); try
{
//停顿5秒进程结束
Thread.sleep(5000);
}
catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
System.out.println(this.getName()+":走到这里,说明没有发生锁,线程正常结束。");
}
}