zoukankan      html  css  js  c++  java
  • java例程练习(多线程[死锁问题])

    /*
     *死锁产生有2个原因:
     *1,资源竞争
     *2,进程间的推进顺序非法
     *
     *程序模拟的是第一个情况
     */
    public class TestDeadLock implements Runnable {
    	public int flag = 1;
    
    	static Object o1 = new Object();
    	static Object o2 = new Object();
    
    	public void run() {
    		System.out.println("flag=" + flag);
    		if(flag == 1) {
    			synchronized(o1) {
    				try {
    					Thread.sleep(500);
    				} catch(InterruptedException e) {
    					e.printStackTrace();
    				}
    				synchronized(o2) {
    					System.out.println("1");
    				}
    
    			}
    		}
    
    		if(flag == 0) {
    			synchronized(o2) {
    				try {
    					Thread.sleep(500);
    				} catch(InterruptedException e) {
    					e.printStackTrace();
    				}
    				synchronized(o1) {
    					System.out.println("0");
    				}
    
    			}
    		}
    	}
    
    	public static void main(String[] args) {
    		TestDeadLock td1 = new TestDeadLock();
    		TestDeadLock td2 = new TestDeadLock();
    		td1.flag = 1;//用flag区分不同的线程
    		td2.flag = 0;
    		Thread t1 = new Thread(td1);
    		Thread t2 = new Thread(td2);
    		t1.start();
    		t2.start();
    
    	}
    
    
    }

  • 相关阅读:
    Fizz Buzz 问题
    旋转字符串
    合并排序数组
    尾部的零
    A + B 问题
    CentOS6.x安装RabbitMQ
    MySql游标
    MySql存储过程
    找出n个自然数(1,2,3,……,n)中取r个数的组合
    正则表达式
  • 原文地址:https://www.cnblogs.com/wjchang/p/3671690.html
Copyright © 2011-2022 走看看