java线程安全之死锁问题
来源:互联网 发布:刚开淘宝店铺卖什么好 编辑:程序博客网 时间:2024/05/17 02:41
/**
* Description: 线程死锁演示
* Copyright (c) , 2016, Jansonxu
* This program is protected by copyright laws.
* Program Name:deadLock.java
* Date: 2016年1月25日
*
* @author 李阳
* @version : 1.0
*/
package Safe;
public class DeadLock {
private Object obj1=new Object();
private Object obj2=new Object();
private boolean flg=false;//标记值 通过标记值的变化 两个线程可以交替执行
//线程死锁演示
class MyThread extends Thread{
@Override public void run() { if(flg){ //让一个线程执行 synchronized (obj1) { System.out.println("线程【"+this.getName()+"】获得了锁对象obj1的锁标记,执行了哦.." + "等待获取obj2的锁标记"); //获得了 标记之后 才能继续往下走 flg=!flg; try { Thread.sleep(200); } catch (InterruptedException e) { e.printStackTrace(); } synchronized (obj2) { System.out.println("线程【"+this.getName()+"】同时获得了锁对象obj1和obj2的锁标记开始执行了哦"); } } }else{ synchronized (obj2) { System.out.println("线程【"+this.getName()+"】获得了锁对象obj2的锁标记,执行了哦.." + "等待获取obj1的锁标记"); //获得了 标记之后 才能继续往下走 flg=!flg; try { Thread.sleep(200); } catch (InterruptedException e) { e.printStackTrace(); } synchronized (obj1) { System.out.println("线程【"+this.getName()+"】同时获得了锁对象obj2和obj1的锁标记开始执行了哦"); } } } }}public static void main(String[] args) { DeadLock outer=new DeadLock(); MyThread thread=outer.new MyThread(); MyThread thread1=outer.new MyThread(); thread1.start(); thread.start();}
}
1 0
- java线程安全之死锁问题
- java中线程同步(线程安全)与死锁问题
- java线程同步之死锁问题
- java线程理解之死锁问题
- 【java并发】线程技术之死锁问题
- java线程安全与死锁
- java线程安全与死锁
- java线程死锁问题
- java线程死锁问题
- GCD 之线程死锁问题
- 线程技术之死锁问题
- java线程同步之死锁
- java多线程之 ---- 线程死锁
- java多线程之线程死锁
- JAVA 线程 之 死锁和线程通信
- Java--线程--线程控制,线程安全,线程同步,线程等待,线程交互,死锁,互斥锁,读写锁
- Java--线程--线程控制,线程安全,线程同步,线程等待,线程交互,死锁,互斥锁,读写锁
- C# 线程的问题之:死锁
- 分类器组合方法
- hadoop 第一个程序 wordcount 详解
- ehcache+spring配置
- MR-5.MapReduce计数器介绍
- sqlserver2005T-SQL查询语句的逻辑查询处理1
- java线程安全之死锁问题
- java中的闭包
- Weblogic注册为Windows的系统服务项+删除服务项
- windows DOS环境下看星球大战
- Android的一些编码规范和优化
- POS机验证流程
- 设计模式笔记
- MR-5.MapReduce分布式缓存(Distribute Cache)
- Swift传值传的是什么