上面的代码为什么什么都不输出
时间: 2024-03-10 11:43:17 浏览: 23
这段代码中的问题在于在创建 Thread 对象时没有传入 Runnable 对象,即没有将 Ticket1 对象作为参数传入 Thread 的构造函数。因此,在执行 new Thread().start() 时,只是创建了一个空的线程对象,而不会执行任何代码,因此也就没有任何输出。要解决这个问题,可以将 Ticket1 对象作为参数传入 Thread 的构造函数,如下所示:
```
import javafx.scene.chart.Axis;
public class o {
public static void main(String[] args){
Ticket1 ticket=new Ticket1();
new Thread(ticket).start();
new Thread(ticket).start();
}
}
class Ticket1 implements Runnable{
private int tickets=10;
Object lock=new Object();
public void run(){
while (true){
synchronized (lock){
try {
Thread.sleep(10);
}catch (Exception e){
e.printStackTrace();
}
if (tickets>0){
System.out.println(Thread.currentThread().getName()
+"售出第"+tickets+"张票");
tickets--;
}
else {
break;
}
}
}
}
}
```
在这个版本的代码中,将 Ticket1 对象作为参数传入了 Thread 的构造函数,并且在 run() 方法中增加了对 tickets 变量的修改,每售出一张票就将 tickets 减一。这样,就可以正确地执行多线程售票操作,并输出相关信息。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)