多线程 死锁
死锁: 如果一个资源被一个线程占用,而且无法释放线程资源,导致其他线程无法访问这个字段,一直处于等待状态,这样就会形成 线程死锁。
例子:
package com.thinkgem.jeesite.modules.face.java.thread;
public class DeadLockTest1 {
final static Object resouce1 = new Object();
final static Object resouce2 = new Object();
public static void main(String[] args) {
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
synchronized (resouce1) {
System.out.println("当前线程名称"+Thread.currentThread().getName());
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("当前线程名称"+Thread.currentThread().getName()+"waiting");
synchronized (resouce2) {
System.out.println("当前线程名称"+Thread.currentThread().getName()+"end");
}
}
}
},"线程一").start();
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
synchronized (resouce2) {
System.out.println("当前线程名称"+Thread.currentThread().getName());
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("当前线程名称"+Thread.currentThread().getName()+"waiting");
synchronized (resouce1) {
System.out.println("当前线程名称"+Thread.currentThread().getName()+"end");
}
}
}
},"线程二").start();
}
}
还没有评论,来说两句吧...