Java开发网 |
注册 |
登录 |
帮助 |
搜索 |
排行榜 |
发帖统计
|
您没有登录 |
» Java开发网 » Java SE 综合讨论区
打印话题 寄给朋友 订阅主题 |
话题被移动 | ||||
该话题已被移动 - littledeer1974 , 2004-10-29 10:36 如果您尚不清楚该话题被移动的原因,请参考论坛规则以及本版公告或者联系本版版主。 |
作者 | 求教:多线程同步代码块和同步方法之间实现同步的问题! |
drxjava
发贴: 21 积分: 0 |
于 2004-10-24 10:24
是两段差不多的代码,都是在多线程同步中的同步代码块和同步方法之间实现同步的代码。 可是代码1能够实现同步代码块和同步方法之间的同步,并且能够启动两个线程。 但是,代码2却不能够启动两个线程,只有第一个线程启动了呀,并且他执行的只是同步方法中的代码,没有执行同步代码块中的代码。 为什么代码2中的第二个线程不能够启动呢?我都做了对比没有发现原因,只有请高手给我这个菜鸟指点一下吧!谢谢拉!:) 代码1: class ThreadD1 { public static void main(String [] args) { TestThread tt=new TestThread(); new Thread(tt).start(); try{Thread.sleep(10);}catch(Exception e){} tt.str=new String("method"); new Thread(tt).start(); } } class TestThread implements Runnable { int tickets = 100; String str = new String(""); public void run() { if(str.equals("method")) { while(true) { synchronized(this) { if(tickets>0) { try{Thread.sleep(10);}catch(Exception e){} System.out.println(Thread.currentThread().getName()+"is selling ticket"+tickets--); } } } } else { while (true) { sale(); } } } public synchronized void sale() { if(tickets>0) { try{Thread.sleep(10);}catch(Exception e){} System.out.print("sale():"); System.out.println(Thread.currentThread().getName()+"is selling ticket"+tickets--); } } } 代码2: class ThreadDo1 { public static void main(String [] args) { TestThread tt=new TestThread(); new Thread(tt).start(); try{Thread.sleep(1);} catch(Exception e) { System.out.println("Note:Exception!!"); } tt.str=new String("drx"); new Thread(tt).start(); } } class TestThread implements Runnable { int tickets=100; String str=new String(""); public void run() { if(str.equals("drx")) { while(true) { synchronized (this) { if(tickets>0) { try{Thread.sleep(10);}catch(Exception e){} System.out.print("成功了!"); System.out.println(Thread.currentThread().getName()+"is selling tickets"+tickets--); } } } } else { while(true) { sale(); } } } public synchronized void sale() { while(true) if(tickets>0) { try{Thread.sleep(10);}catch(Exception e){} System.out.print("sale()haha"); System.out.println(Thread.currentThread().getName()+"is selling tickets"+tickets--); } } } 基于WEB的J2EE报表解决方案集锦 |
话题树型展开 |
人气 | 标题 | 作者 | 字数 | 发贴时间 |
7947 | 求教:多线程同步代码块和同步方法之间实现同步的问题! | drxjava | 2734 | 2004-10-24 10:24 |
6301 | Re:求教:多线程同步代码块和同步方法之间实现同步的问题! | archonLing | 969 | 2004-10-24 12:01 |
6232 | Re:求教:多线程同步代码块和同步方法之间实现同步的问题! | drxjava | 43 | 2004-10-24 13:45 |
6306 | Re:求教:多线程同步代码块和同步方法之间实现同步的问题! | drxjava | 450 | 2004-10-24 17:23 |
5938 | Re:求教:多线程同步代码块和同步方法之间实现同步的问题! | archonLing | 472 | 2004-10-24 21:53 |
6618 | Re:求教:多线程同步代码块和同步方法之间实现同步的问题! | drxjava | 34 | 2004-10-25 12:20 |
已读帖子 新的帖子 被删除的帖子 |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |