2014-10-01 138 views
-2

如果我有一个循环是这样的:暂停循环

for(int i = 0; i <= 10; i++) { 
    System.out.println("Hello, User " + i; 
    Thread.sleep(1000) 
} 

我怎么会去补充说,没有要求用户输入的代码,但如果用户选择了暂停环路在给定点,他们可以这样做,并在几分钟后恢复?

+0

什么?你说你不想用户输入,但是然后描述用户输入。你究竟想要做什么? – tnw 2014-10-01 15:22:23

+0

我与@tnw - 你的意图不明确。你想为你的'i = 6'步骤硬编码一个更长的中断吗? – chrisb2244 2014-10-01 15:30:10

+0

它不在代码中,因为我不知道它是否可能。如果用户想输入某些内容,我不希望它在每次迭代时都提出要求,我希望用户能够在每次迭代中的任意点输入内容以便暂停它 – brianforan 2014-10-01 17:53:45

回答

0

为此,您需要实现多线程。一个线程将运行循环(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。

0

尝试创建后台线程,等待1秒让用户选择暂停。如果在1秒内未选中,请继续前进。

这样写的方式,你的Thread.sleep()将锁定用户界面1秒,无论用户做什么,它都不会影响你的程序。