[quote=引用 1 楼 wangyin970774934 的回复:] 二个线程共享P这一个对象,一个线程在run的时候,你用了synchronized(this) 锁住了这个对象,另一个线程就要等待这个对象被释放,所有不会出现问题。 小白见解。
你创建Thread两个对象时都以prize的对象来创建,所以最后实质t1和t2指向的是同一个对象,所以只有一把锁,所以两个线程启动后要A线程执行完了后B才能进同步语句块
[size=16px]首先,你采用的是同步代码块的方式来保证线程同步,他的锁可以是任意对象(匿名对象除外)。 第一种之所以达不到效果,是因为prize类里面的amout不是静态的,每个线程都是在用自己的amout 第二种方式OK,是因为你在启动线程之前创建了一个prize对象,并且让两个线程公用这个对象,所以每个线程用的是同一个amout [/size] 希望对你有所帮助
二个线程共享P这一个对象,一个线程在run的时候,你用了synchronized(this) 锁住了这个对象,另一个线程就要等待这个对象被释放,所有不会出现问题。 小白见解。
62,615
社区成员
307,307
社区内容
加载中
试试用AI创作助手写篇文章吧