多线程——死锁

Posted whx20100101

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程——死锁相关的知识,希望对你有一定的参考价值。

多线程死锁的简单使用:

public class MyLock{
    public static final Object locka=new Object();
    public static final Object lockb=new Object();
    public static final Object lockc=new Object();
    public static final Object lockd=new Object();
}
package day_12_01_Thread;

/**
 * 死锁的情况
 * 
 * @author Administrator
 *
 */
public class TestSynchronized implements Runnable {
    public static void main(String[] args) {
        TestSynchronized s = new TestSynchronized();
        Thread t1 = new Thread(s);
        Thread t2 = new Thread(s);

        t1.start();
        t2.start();
    }

    @Override
    public void run() {
        int i = 0;
        while (true) {
            if (i % 2 == 0) {
                synchronized (MyLock.locka) {
                    System.out.println("if.......locka");
                    synchronized (MyLock.lockb) {
                        System.out.println("if ...........lockb");
                    }
                }
            } else {
                synchronized (MyLock.lockb) {
                    System.out.println("else..........lockb");
                    synchronized (MyLock.locka) {
                        System.out.println("else..........locka");
                    }
                }
            }

            i++;
        }
    }
}

 

以上是关于多线程——死锁的主要内容,如果未能解决你的问题,请参考以下文章

Java多线程-死锁简述

多线程死锁代码

死锁的概念以及处理方式

多线程的死锁

JAVA程序设计,多线程且避免死锁

使用多线程代码在一张表上发生 MySQL 死锁