`
shangjava
  • 浏览: 1190406 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

java模拟线程死锁

 
阅读更多

/*
java线程死锁的模拟
两个线程同时请求对方的对方释放监视对象 造成死锁 
请在 虚拟机 单核下运行
*/

class  Test  
{
 public static void main(String []args)  throws Exception 
   {
     ThreadOne td=new ThreadOne();
     new Thread(td).start();
     Thread.sleep(3);
     new Thread(td).start();
   }
}
class ThreadOne  implements Runnable 
{
 
 
 int tickets=100;
 Object obj=new Object();
 boolean b=false;
 public void run()
 {
  if(b==false)
  {
   while(true)
    sell();
  }
  else
  {
   while(true)
   {
    synchronized(obj)
    {
     try
     {
      Thread.sleep(10);
     }
     catch(Exception e)
     {
      e.printStackTrace();
     }
     synchronized(this)
     {
      if(tickets>0)
      {
       
       System.out.println("obj:"+Thread.currentThread().getName()+
         " sell tickets:"+tickets);
       tickets--;
      }
     }
    }
   }
  }
 }
 public synchronized void sell()
 {
  synchronized(obj)
  {
   if(tickets>0)
   {
    try
    {
     Thread.sleep(10);
    }
    catch(Exception e)
    {
     e.printStackTrace();
    }
    System.out.println("sell():"+Thread.currentThread().getName()+
      " sell tickets:"+tickets);
    tickets--;
   }
  }
 }
 
 
 
 
}

0
3
分享到:
评论

相关推荐

    Java实现线程死锁

     春节的时候去面试了一家公司,笔试题里面有一道是使用简单的代码实现线程的‘死锁’,当时没有想到这道题考的是Synchronized关键字,于是自己定义了两个资源模拟了一下。后面想想肠子都悔青了,于是自己在电脑上...

    java线程程序实例

    java线程 死锁 锁机制,java模拟生产者与消费者

    Java编程之多线程死锁与线程间通信简单实现代码

    主要介绍了Java编程之多线程死锁与线程间通信简单实现代码,具有一定参考价值,需要的朋友可以了解下。

    java多线程学习之死锁的模拟和避免(实例讲解)

    下面小编就为大家带来一篇java多线程学习之死锁的模拟和避免(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    基于多线程的电梯调度模拟仿真系统 开题报告

    Java的多线程机制能够很方便地创建和运行多个独立的线程的程序,并且可以创建多个同步线程,实现多个任务的同步执行,这一机制对于实现资源共享、防止“死锁”现象的出现极为有用。多线程的程序能更好地表达和解决具体...

    Java高级程序设计-多线程(二).pptx

    本章内容 掌握同步代码块的使用 掌握同步方法的使用 理解线程死锁 掌握 ThreadLocal 类的使用 使用多线程模拟猴子采花 使用同步方法模拟购票 使用多线程模拟购物订单生成 使用 ThreadLocal 类模拟银行取款 Java高级...

    JAVA上百实例源码以及开源项目源代码

    java模拟掷骰子2个 1个目标文件,输出演示。 java凭图游戏 一个目标文件,简单。 java求一个整数的因子 如题。 Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,密钥  Java生成密钥、保存密钥的实例源码...

    JAVA上百实例源码以及开源项目

    java模拟掷骰子2个 1个目标文件,输出演示。 java凭图游戏 一个目标文件,简单。 java求一个整数的因子 如题。 Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,密钥  Java生成密钥、保存密钥的实例源码...

    模拟哲学家进餐问题(JAVA)

    桂林理工大学操作系统实习,关于死锁的哲学家进餐问题,演示系统 , java写的,多线程,有图形界面。 桂林理工大学的就来吧,哈哈 ,附带实验报告

    java 编程入门思考

    16.3 模拟垃圾回收站 16.4 改进设计 16.4.1 “制作更多的对象” 16.4.2 用于原型创建的一个范式 16.5 抽象的应用 16.6 多重派遣 16.6.1 实现双重派遣 16.7 访问器范式 16.8 RTTI有害吗 16.9 总结 16.10 练习 第17章...

    Java初学者入门教学

    16.3 模拟垃圾回收站 16.4 改进设计 16.4.1 “制作更多的对象” 16.4.2 用于原型创建的一个范式 16.5 抽象的应用 16.6 多重派遣 16.6.1 实现双重派遣 16.7 访问器范式 16.8 RTTI有害吗 16.9 总结 16.10 练习 第17章...

    java联想(中文)

    16.3 模拟垃圾回收站 16.4 改进设计 16.4.1 “制作更多的对象” 16.4.2 用于原型创建的一个范式 16.5 抽象的应用 16.6 多重派遣 16.6.1 实现双重派遣 16.7 访问器范式 16.8 RTTI有害吗 16.9 总结 16.10 练习 第17章...

    JAVA 范例大全 光盘 资源

    实例126 模拟下载文件(线程等待和通报) 365 实例127 家族等级(线程优先级) 368 实例128 定时器(Timer) 371 实例129 没法吃饭(死锁) 372 实例130 方便吃饭(解决死锁) 375 实例131 查看JVM中所有的线程...

    JAVA_Thinking in Java

    16.3 模拟垃圾回收站 16.4 改进设计 16.4.1 “制作更多的对象” 16.4.2 用于原型创建的一个范式 16.5 抽象的应用 16.6 多重派遣 16.6.1 实现双重派遣 16.7 访问器范式 16.8 RTTI有害吗 16.9 总结 16.10 练习 第17章...

    Thinking in Java 中文第四版+习题答案

    16.3 模拟垃圾回收站 16.4 改进设计 16.4.1 “制作更多的对象” 16.4.2 用于原型创建的一个范式 16.5 抽象的应用 16.6 多重派遣 16.6.1 实现双重派遣 16.7 访问器范式 16.8 RTTI有害吗 16.9 总结 16.10 练习 第17章 ...

    Thinking in Java简体中文(全)

    16.3 模拟垃圾回收站 16.4 改进设计 16.4.1 “制作更多的对象” 16.4.2 用于原型创建的一个范式 16.5 抽象的应用 16.6 多重派遣 16.6.1 实现双重派遣 16.7 访问器范式 16.8 RTTI有害吗 16.9 总结 16.10 练习 第17章...

    java自学之道

    3.3 线程死锁 六、GUI 1、图形用户界面概述 1.1 组件 1.2容器 1.3 AWT组件 1.4 Swing组件 1.5 组件与容器的关系 1.6 swing常用组件 2、Swing常用组件 2.1文本组件 2.2 标签 2.3 按钮 2.4单选按钮组件 2.5 复选框...

    java范例开发大全源代码

    第1篇 Java编程基础  第1章 Java开发环境的搭建(教学视频:9分钟) 2  1.1 理解Java 2  1.2 搭建Java所需环境 3  1.2.1 下载JDK 3  1.2.2 安装JDK 4  1.2.3 配置环境 5  1.2.4 测试JDK配置...

Global site tag (gtag.js) - Google Analytics