public class T {
public static void main(String[] args) {
Card card = new Card();
new Thread(card).start();
new Thread(card).start();
}
}
class Card implements Runnable{
private int balance = 10000;
@Override
public/*synchronized*/ void run() {
while (true){
synchronized (this){
if (balance <= 0) {
System.out.println("余额不足。取钱失败");
break;
}
balance -= 1000;
System.out.println(Thread.currentThread().getName() + "取钱成功,当前余额为:" + balance);
}
try {
Thread.sleep(5);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
只给run方法上锁后只有一个进程能执行?为什么没有交替执行?
synchronized 对run上锁,相当于这个方法同一个时间只能一个线程访问,所以不能交替。
如有帮助,请采纳一下,谢谢!如有不清楚可以在问额。
synchronized 对run方法上锁,就表明了,只能有一个线程在同一时间执行,所以等该线程执行完毕,才会进行下一个线程执行,synchronized 是同步锁,非公平的锁