本文主要是介绍java线程死锁例子及解决方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Java线程死锁是由于有些资源彼此交叉取用,就有可能造成死结.
如1线程中 取得A对象的锁定后又要取得B对象的锁定.但是同时2线程中取得B对象的锁定后又要取得A对象的锁定.这两个线程同时发生时就会造成,1线程拿到A对象锁定后等待B对象的锁定.2线程拿到B对象锁定后等待A对象锁定.这样就会进入没有停止的等待中.
线程死锁的一个简单例子:
package deadLockThread;public class Test {private int size=0; public synchronized void doSome(){
size++;
}public synchronized void doTest(Test test){
try {
Thread.sleep(1000);//睡眠1秒 效果更明显
} catch (InterruptedException e) {
e.printStackTrace();
}
test.doSome(); //另外一个对象调用synchronized 函数 需要取得该对象的对象锁定}}
package deadLockThread;public class DeadLock {public static void main(String[] args) {final Test t1=new Test();final Test t2=new Test();Thread th1=new Thread(new Runnable() {@Overridepublic void run() {// TOD
这篇关于java线程死锁例子及解决方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!