请求大家帮助,关于synchronized同步代码块 的问题

boyboy66 2005-09-12 05:30:33

class ThreadA {
2. public static void main(String [] args) {
3. ThreadB b = new ThreadB();
4. b.start();
5.
6. synchronized(b) {
7. try {
8. System.out.println("Waiting for b to complete...");
9. b.wait();
10. } catch (InterruptedException e) {}
11. }
12. System.out.println("Total is: " + b.total);
13. }
14. }
15.
16. class ThreadB extends Thread {
17. int total;
18.
19. public void run() {
20. synchronized(this) {
21. for(int i=0;i<100;i++) {
22. total += i;
23. }
24. notify();
25. }
26. }
27. }
请问,主线程main要进入第6行的同步块是否要取得b对象的锁后才能进,而第19行b对象已进入synchronized(this) 代码块,是不是b已经打开了自己的锁,所以main主线程序就不能进入synchronized(b)代码块了?
...全文
154 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuzy2004 2005-09-24
  • 打赏
  • 举报
回复
进入之后
是a 等待 b 唤醒之后打印total
layueer 2005-09-12
  • 打赏
  • 举报
回复
up

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧