900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > java点击按钮结线程_多线程的Java应用程序在调试工具Netbeans中单击“停止”按钮时输

java点击按钮结线程_多线程的Java应用程序在调试工具Netbeans中单击“停止”按钮时输

时间:2024-04-04 23:59:49

相关推荐

java点击按钮结线程_多线程的Java应用程序在调试工具Netbeans中单击“停止”按钮时输

我使用wait()和notify()机制学习了java中的多线程。

但我很好奇输出一个简单的多线程Java应用程序。

代码如下:

class Q {

int n;

boolean valueSet = false;

synchronized int get() {

if (!valueSet) {

try {

wait();

} catch (InterruptedException e) {

System.out.println("InterruptedException caught");

}

}

System.out.println("Got: " + n);

valueSet = false;

notify();

return n;

}

synchronized void put(int n) {

if (valueSet) {

try {

wait();

} catch (InterruptedException e) {

System.out.println("InterruptedException caught");

}

}

this.n = n;

valueSet = true;

System.out.println("Put: " + n);

notify();

}

}

class Producer implements Runnable {

Q q;

Producer(Q q) {

this.q = q;

new Thread(this, "Producer").start();

}

public void run() {

int i = 0;

while (true) {

q.put(i++);

}

}

}

class Consumer implements Runnable {

Q q;

Consumer(Q q) {

this.q = q;

new Thread(this, "Consumer").start();

}

public void run() {

while (true) {

q.get();

}

}

}

class PCFixed {

public static void main(String args[]) {

Q q = new Q();

new Producer(q);

new Consumer(q);

System.out.println("Press Control-C to stop.");

}

}拳头,我运行该应用程序之后,我点击调试工具中的“停止”按钮来停止应用程序。这使得两个“奇怪的类型输出”:

这是第一次应用程序运行的输出:

这是第二次应用程序运行的输出:

为什么我们有两个重复的输出行:“put:13177”

为什么我们有两个重复的输出行:“got:2713”。

那个结果让我感到困惑!有些身体可以帮助我理解这个问题!

感谢先进。

java点击按钮结线程_多线程的Java应用程序在调试工具Netbeans中单击“停止”按钮时输出一个奇怪的结果...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。