中易网

关于synchronized的问题 线程同步!~

答案:2  悬赏:20  
解决时间 2021-04-27 16:51

import java.util.*;

public class tt extends Thread {
timmer t = new timmer();

public tt() {

}

public tt(String n) {
this.setName(n);
}

public void run() {
t.go();
}

public static void main(String args[]) {
tt t1 = new tt("帐三");
t1.start();
tt t2 = new tt("李四");

t2.start();

}
}

class timmer {
public void go() {
synchronized (this) {
for (int i = 0; i < 1000; i++) {
try {
Thread.sleep(1);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.print(Thread.currentThread().getName());
System.out.println("取出1W元");
}
}

}
}

最佳答案

你锁的对象是this,而this就timmer 类,你new了两个 tt()类。j也就是有两个timmer 存在了。你加锁的不是同一个对象



你把timmer 作为参数通过构造器传进去,不要在内部new 这样timmer 就是一个了

全部回答

当然没有锁住线程对象,需要共同调用一个类才会锁,你看

tt t1 = new tt("帐三"); t1.start(); tt t2 = new tt("李四");

t2.start(); 每一个类都用

timmer t = new timmer();

所以没有锁

我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
塞尔号 这是啥精灵?
怎样可以让心静下来的方法
宏涛酒业在哪里啊,我有事要去这个地方
大家有什么好听的歌介绍一下
为什么把氢氧化铯放入水中会产生热
会员的生日有阴历的有阳历的EXCEL表格怎么做
魔兽世界 工程怎么提高的快 做什么卖钱多啊?
黑建筑 机械制造与自动化专业怎么样? 什么
常州哪里有港版诺基亚5730买
棱柱与圆柱的不同点
老胡今天坐的哪是什么车啊?是卡迪拉克吗?
喜欢和爱到底区别在哪里???
江阴市西郊东林家电维修部怎么去啊,有知道地
求红警2共和国之辉的合作模式的地图。
QQ业务续费?
推荐资讯
怎样减腰肉
小规模纳税人开300多万的发票吗
一道应用题!!!、】
尖坡我想知道这个在什么地方
网速6606.6Kbps好吗?
骑士被淘汰,你们大家是怎么看的?
广东厚德科技有限公司在哪里啊,我有事要去这
顾漫的所有小说TXT
怎么打魔师滴露???
可以每晚用珍珠粉做面膜敷脸么
运政宾馆在什么地方啊,我要过去处理事情
名壶制作中心在哪里啊,我有事要去这个地方
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?