解决方案 »
- SSH整合中spring的作用,除了可以解耦合和管理实务外还有什么作用?
- 关于鼠标的知识
- 如何根据jprofiler来判断内存泄露
- 求助 jspsmartupload 出现Files' name is invalid or does not exist !
- 急!访问页面时报错,MySQL服务也终止了
- 怎样才能使用weblogic.jdbc.mssqlserver4.Driver数据库驱动
- hibernate中级联操作问题
- 如何在Jbuilder 中设置ejb的 jndi
- JbuilderX里面怎么配置jboss?
- 请问学j2ee有用sun的j2ee sdk的吗?
- 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()+":走到这里,说明没有发生锁,线程正常结束。");
}
}