解答下线程问题谢谢\!!!

class ThreadTest01 implements Runnable {

int num = 100;


// 2、覆盖接口中的run方法。。

@Override

public void run() {

while (true) {

/*

* 格式: synchronized(锁对象){ //需要同步的代码 }

*/

synchronized (Demo1.class) {

if (num<= 0) {

break;

}

try {

Thread.sleep(1);

System.out.println(

Thread.currentThread().getName() + "出售了" + (1000 - num + 1) + "张票,还剩余:" + (--num) + "张");

/*

* this.notify(); this.wait();

*/

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}

}

这个我把if语句里面的num<=0  break; 改成num>0; 为什么程序一直在运行,还有负数啊,求解释?

慕姐8946757
浏览 1652回答 3
3回答

慕工程2701759

老哥,看起来也没毛病,运行起来也没毛病,不管是一个线程还是多个线程。我和你的区别就是我的锁是自己定义了一个Object o= new Object();你那个锁我不知道是什么

qq_雨过之后_1

一致循环是因为外面是while(true),而出现负数肯定是锁对象不一致,试一下ThreadTest01 .class这个锁对象

慕姐8946757

class ThreadTest01 implements Runnable {int num = 100;// 2、覆盖接口中的run方法。。@Overridepublic void run() {while (true) {/** 格式: synchronized(锁对象){ //需要同步的代码 }*/synchronized (Demo1.class) {if (num》0) {}try {Thread.sleep(1);System.out.println(Thread.currentThread().getName() + "出售了" + (1000 - num + 1) + "张票,还剩余:" + (--num) + "张");/** this.notify(); this.wait();*/} catch (InterruptedException e) {e.printStackTrace();}}}}}请把我这段代码运行一下试试 为甚有负数 不对了? 知道回答下 谢谢!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java