deadlockrisk.java

来自「贪食蛇的实现源码」· Java 代码 · 共 52 行

JAVA
52
字号
package jawt;

public class DeadlockRisk {
	
	private static class Resource{
		public int value;
	}
	private Resource resourceA=new Resource();
	private Resource resourceB=new Resource();
	
	public int read(){
		synchronized(resourceA){//may deadlock here
			System.out.println("===========");
			synchronized(resourceB){
				System.out.println(">>>>>>>>>>");
				return resourceB.value+resourceA.value;
			}
		}
	}
	public void write(int a,int b){
		synchronized(resourceB){//may deadlock here
			System.out.println("++++++++++");
			synchronized(resourceA){
				System.out.println("-----------");
				resourceA.value=a;
				resourceB.value=b;
			}
		}
		
	}
	class ThreadRW implements Runnable {
		public void run(){
			while (resourceA.value!=0&&resourceB.value!=0){
				int r=read();
		
			
			}
		
		}
		
	}
	public static void main(String[] args){
		DeadlockRisk risk=new DeadlockRisk();
		risk.write(5, 6);
		int m=risk.read();
		System.out.println(m);
		
	}
	
	
}

⌨️ 快捷键说明

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