`
chairmanMao
  • 浏览: 16109 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

Java 交替打印A,B,C问题

阅读更多
    今天无意中看到CSDN上zyplus关于wait,notify的精彩讲述,原文地址在:http://blog.csdn.net/zyplus/article/details/6672775,但文中的示例程我拷贝下来后发现是死锁,看了下面的评论,找到了问题所在。仔细回想了程序的执行过程,还原了一下死锁的发生过程,过程如下。
     这个程序的执行过程:线程a获取c的锁,获取自身锁,打印A,notify操作,c进行wait操作,线程a不能访问c;
切换到线程b,获取a的锁,获取自身锁,打印B,notify操作,a进行wait操作,线程b不能访问a;
切换到线程c,获取b的锁,获取到自身锁,打印C,notify操作(现在线程a可以访问c了),b进行wait操作;
    进行完第9次时,b,a都进行了wait操作,线程b不能访问a,线程c不能访问b;第10次时线程a打开自身,关闭c(线程a不能访问c),同于线程b不能访问a,线程c不能该问b,第11次时线程a执行完,无法打开自身;那么线程b不能访问a,于是它就开始等待a打开自身,c就会等待b打开自身,从而锁住程序
分享到:
评论

相关推荐

    多线程 打印1-99,100-199

    1. 实现一个类ThreadMock(模拟线程),用来模仿Thread类,该类具有以下特征: ... 两个线程交替打印。例如第一个线程打印1,接着第二个线程打印100,接着第一个线程打印2。。。。。。。。依此类推。

    Java面试宝典-经典

    1、编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。 61 2、编写一个程序,将d:\java目录下的所有.java文件复制到d...

    Java面试宝典2010版

    1、编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。 61 2、编写一个程序,将d:\java目录下的所有.java文件复制到d...

    java面试题大全(2012版)

    1、编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。 61 2、编写一个程序,将d:\java目录下的所有.java文件复制到d...

    最新Java面试宝典pdf版

    1、编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。 61 2、编写一个程序,将d:\java目录下的所有.java文件复制到d...

    java面试宝典2012

    1、编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。 67 2、编写一个程序,将d:\java目录下的所有.java文件复制到d...

    Java面试笔试资料大全

    1、编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。 61 2、编写一个程序,将d:\java目录下的所有.java文件复制到d...

    JAVA面试宝典2010

    1、编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。 61 2、编写一个程序,将d:\java目录下的所有.java文件复制到d...

    Java面试宝典2012新版

    1、编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。 61 2、编写一个程序,将d:\java目录下的所有.java文件复制到d...

    Java面试宝典2012版

    1、编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。 61 2、编写一个程序,将d:\java目录下的所有.java文件复制到...

    Java 面试宝典

    37、下面这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d"; .................. 25 38、try {}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会不 会被执行,什么时候被执行,在 ...

Global site tag (gtag.js) - Google Analytics