本帖最后由 安鹏宇 于 2013-3-20 20:42 编辑
- <p style="line-height: 30px; text-indent: 2em;">class DeadThread {
- public static String s= "t1";
- public static String n="t2";//成员变量
- public static void</font> main(String[] args) {
-
- new Thread("t1"){
- public void run(){
- while(true)//无线循环
- synchronized(s){
- System.out.println(getName()+" t1");
- synchronized(n){//同步锁嵌套
- System.out.println(getName()+" t2o");
- }
- }
- }
- }.start();
- new Thread("t2"){
- public void run(){
- while(true)
- synchronized(n){
- System.out.println(getName()+" t2o");
- synchronized(s){
- System.out.println(getName()+" t1");
- }
- }
- }
- }.start();
- }
- }
复制代码两个线程应该是同时运行的吧?虽然死锁几率比较小,但我打印出来无限循环t1,为什么?
即使造不成死锁,t2总应该一块打印的吧?为什么无限循环t1?并且每次都是打印一次
t2就结束。。。求解。。
|