如果我有一個循環是這樣的:暫停循環
for(int i = 0; i <= 10; i++) {
System.out.println("Hello, User " + i;
Thread.sleep(1000)
}
我怎麼會去補充說,沒有要求用戶輸入的代碼,但如果用戶選擇了暫停環路在給定點,他們可以這樣做,並在幾分鐘後恢復?
如果我有一個循環是這樣的:暫停循環
for(int i = 0; i <= 10; i++) {
System.out.println("Hello, User " + i;
Thread.sleep(1000)
}
我怎麼會去補充說,沒有要求用戶輸入的代碼,但如果用戶選擇了暫停環路在給定點,他們可以這樣做,並在幾分鐘後恢復?
爲此,您需要實現多線程。一個線程將運行循環(T1),而其他線程可以等待用戶輸入(T2)。
T1 - 同時 - >檢查,如果通過公共布爾屬性輸入 - > 繼續/中斷循環
T2 - 等待輸入 - >如果輸入== 「暫停」 - >集共同屬性爲true, 暫停循環
喜歡的東西:
class MultiThread implements Runnable {
boolean gotInput = false;
int i = 0;
public void run() {
for(;i <= 10 && !gotInput; i++) {
System.out.println("Hello, User " + i;
Thread.sleep(1000)
}
}
public static void main(String args[]) {
MultiThread mt = new MultiThread();
Thread t = new Thread(mt);
t.start();
Scanner s = new Scanner(System.in);
while (!s.next().equals("pause"));
test.gotInput = true;
}
}
在同一行,你可以恢復,如果NE代碼EDED。
嘗試創建後臺線程,等待1秒讓用戶選擇暫停。如果在1秒內未選中,請繼續前進。
這樣寫的方式,你的Thread.sleep()
將鎖定用戶界面1秒,無論用戶做什麼,它都不會影響你的程序。
什麼?你說你不想用戶輸入,但是然後描述用戶輸入。你究竟想要做什麼? – tnw 2014-10-01 15:22:23
我與@tnw - 你的意圖不明確。你想爲你的'i = 6'步驟硬編碼一個更長的中斷嗎? – chrisb2244 2014-10-01 15:30:10
它不在代碼中,因爲我不知道它是否可能。如果用戶想輸入某些內容,我不希望它在每次迭代時都提出要求,我希望用戶能夠在每次迭代中的任意點輸入內容以便暫停它 – brianforan 2014-10-01 17:53:45