死锁的概念不懂 java学到死锁了,有几个问题不懂:1.锁住了一个方法,另外一个死锁的方法不能运行?2.如果是这样,如何发生死锁?一个死锁方法调用1,2方法,用一个死锁方法调用2,1,如何实现死锁? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 死锁是一个线程争取一个资源,而其他线程不肯定释放同一资源的时候发生的,互不相让,这里有个例子,供你参考:public class AnotherDeadLock{ public static void main(String[] args) { final Object resource1 = "resource1"; final Object resource2 = "resource2"; Thread t1 = new Thread() { public void run() { //锁住resource 1 synchronized (resource1) { System.out.println("Thread 1: locked resource 1"); try { Thread.sleep(50); } catch (InterruptedException e) { } //试图再去锁resource2,但已被t2锁住,获取不到 synchronized (resource2) { System.out.println("Thread 1: locked resource 2"); } } } }; Thread t2 = new Thread() { public void run() { //锁住resource2 synchronized (resource2) { System.out.println("Thread 2: locked resource 2"); try { Thread.sleep(50); } catch (InterruptedException e) { } //试图再去锁resource1,但已被t1锁住,获取不到 synchronized (resource1) { System.out.println("Thread 2: locked resource 1"); } } } }; t1.start(); //只有t1执行不会发生死锁 t2.start();//同时执行,就会发生死锁 }} 关于JAVASwing编程中的控件问题 java对于不同jdk编译出来的字节码,有没有规定可移植性? 怎样能学好JAVA?为什么我感觉学起来那么费劲呢?好像很多人接受起来都很快的 。 关于导入包的问题 能解决我的问题就能得200分~~ 正则表达式问题?懂的请进. 如何能将java的class文件打包成可以双击执行的*.jar文件? 请问怎么监测程序无任何操作?(100分) 怎样从table表中取出一列值? 求救! 初学者请教 解释型语言的比编译型语言
{ public static void main(String[] args) {
final Object resource1 = "resource1";
final Object resource2 = "resource2";
Thread t1 = new Thread() {
public void run() {
//锁住resource 1
synchronized (resource1) {
System.out.println("Thread 1: locked resource 1"); try {
Thread.sleep(50);
} catch (InterruptedException e) {
}
//试图再去锁resource2,但已被t2锁住,获取不到
synchronized (resource2) {
System.out.println("Thread 1: locked resource 2");
}
}
}
}; Thread t2 = new Thread() {
public void run() {
//锁住resource2
synchronized (resource2) {
System.out.println("Thread 2: locked resource 2"); try {
Thread.sleep(50);
} catch (InterruptedException e) {
}
//试图再去锁resource1,但已被t1锁住,获取不到
synchronized (resource1) {
System.out.println("Thread 2: locked resource 1");
}
}
}
};
t1.start(); //只有t1执行不会发生死锁
t2.start();//同时执行,就会发生死锁
}
}