⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 deadlock.java

📁 这是《Java案例精粹150例(上册)》一书配套的源代码。
💻 JAVA
字号:
package thread;

public class Deadlock {
	public static void main(String[] args) {
		// 定义线程竞争的两个临界资源
		final Object resource1 = "resource1";
		final Object resource2 = "resource2";
		// 第一个线程,先竞争resource1,后竞争resource2
		Thread t1 = new Thread() {
		public void run() {
			// 锁定resource1
			synchronized(resource1) {
			System.out.println("Thread 1: locked resource 1");
			// 线程休眠一段时间
			try { Thread.sleep(50); }
			catch (InterruptedException e) {}
			
			// 竞争resource2
			synchronized(resource2) {
				System.out.println("Thread 1: locked resource 2");
			}
			}
		}
		};
        
		// 第二个线程,先竞争resource2,后竞争resource1
		Thread t2 = new Thread() {
		public void run() {
			// 线程锁定resource1
			synchronized(resource2) {
			System.out.println("Thread 2: locked resource 2");
			
			// 休眠片刻
			try { Thread.sleep(50); }
			catch (InterruptedException e) {}
			
			// 竞争resource2
			synchronized(resource1) {
				System.out.println("Thread 2: locked resource 1");
			}
			}
		}
		};
        
        // 启动两个线程
		t1.start(); 
		t2.start();
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -