java多线程遇到的问题_关于Java多线程遇到的问题.
1.最近在學(xué)習(xí)Java多線程,看到視頻中要實(shí)現(xiàn)一個(gè)類似鬧鐘和小明的情景, 要求鬧鐘響,小明關(guān)鬧鐘, 三秒后鬧鐘再響,小明再關(guān), 重復(fù)10次程序結(jié)束. 不知道為什么我的程序小明只能輸出一次.
public class Test {
public static void main(String[] args) {
Clock ck = new Clock();
new XiaoMing(ck);
}
}
public class Clock implements Runnable{
public Boolean isAlarm;
public Boolean shutdown;
public Clock() {
isAlarm = false;
shutdown = false;
new Thread(this).start();
}
@Override
public void run() {
for (int i = 0; i < 10; i++) {
isAlarm = true;
System.out.println("Get up * 3 !");
synchronized (this) {
notifyAll();
try {
wait(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
shutdown = true;
}
}
public class XiaoMing implements Runnable{
private Clock clk;
public XiaoMing(Clock clk) {
this.clk = clk;
new Thread(this).start();
}
@Override
public void run() {
while(true) {
if (clk.isAlarm) {
System.out.println("Woshixiaoming!");
clk.isAlarm = false;
synchronized (this) {
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
else{
if(clk.shutdown)? ? break;
}
}
}
}
輸出結(jié)果如下
Get up * 3 !
Woshixiaoming!
Get up * 3 !
Get up * 3 !
...(10 次 Getup, 之后程序停在那里)
總結(jié)
以上是生活随笔為你收集整理的java多线程遇到的问题_关于Java多线程遇到的问题.的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java oracle.sql.stru
- 下一篇: java鼠标经过时变色_将鼠标悬停在标签