我是个实用主义者,任何看不到的东西都是虚无缥缈的,我们经常讨论死锁,我就不讨论了,我给一个模拟死锁的代码,仅供参考。 /** * DeadLockMarker.java * com.wmmad.test * * ver date author * ────────────────────────────────── * 1.0 2009-5-12 madding.lip * * Copyright (c) 2009, wmmad All Rights Reserved. */ package com.wmmad.test; /** * ClassName:DeadLockMarker * * @author madding.lip * @version * @since Ver 1.0 * @Date 2009-5-12 下午05:47:28 * * @see */ public class DeadLockMarker { public static void main(String[] args) throws Exception { // 资源 final Object lock1 = new Object(); final Object lock2 = new Object(); // 和run2并发执行 Runnable run1 = new Runnable() { public void run() { // 锁定lock1资源 synchronized (lock1) { print("lock1"); sleep(); // 锁定lock2资源 synchronized (lock2) { print("lock2"); } } } }; // 和run1并发执行 Runnable run2 = new Runnable() { public void run() { // 锁定lock2资源 synchronized (lock2) { print("lcok2"); sleep(); // 锁定lock1资源 synchronized (lock1) { print("lock1"); } } } }; Thread t1 = new Thread(run1, "thread-1"); Thread t2 = new Thread(run2, "thread-2"); // 启动线程 t1.start(); t2.start(); t1.join(); t2.join(); } private static void sleep() { try { Thread.sleep(1000); } catch (InterruptedException e) { System.out.println(e.getMessage()); } } private static void print(String lock) { System.out.printf("%s locks %s/n", Thread.currentThread().getName(), lock); } }