2012-07-25 80 views
0
class BeeperControl { 
    private final static ScheduledExecutorService scheduler = 
            Executors.newScheduledThreadPool(1); 

    public static void main(String[] args){ 
     beepForAnHour(); 
    } 

    public static void beepForAnHour() { 
     final Runnable beeper = new Runnable() { 
      public void run() { 
       System.out.println(“beep”); 
      } 
     }; 
     final ScheduledFuture beeperHandle = 
      scheduler.scheduleAtFixedRate(beeper, 10, 10, SECONDS); 

     scheduler.schedule(new Runnable() { 
      public void run() { 
       beeperHandle.cancel(true); 
      } 
     }, 60 * 60, SECONDS); 
    } 
} 

此代码每10秒钟蜂鸣一小时。我如何让它每10分钟一次哔哔声。因为它应该每10分钟一直保持蜂鸣声(不只是一小时)将代码更改为永久重复

+1

将它包裹在'while(true){}'里面? – 11684 2012-07-25 09:11:27

+0

第1步:以可读方式格式化您的代码。 – 2012-07-25 09:11:41

+0

哪个更好.. schedulor或sleep ????????? – user1545477 2012-07-25 09:17:50

回答

3

您明确安排取消任务。如果您不想取消,则不要安排取消任务。

+0

谢谢.................... – user1545477 2012-07-25 09:16:07

+0

哪个更好.. schedulor或sleep ????????? – user1545477 2012-07-25 09:18:32

+0

调度程序更好。 – 2012-07-25 09:26:28

1

只删除取消的第二个时间表。

+0

omg谢谢你:),..... – user1545477 2012-07-25 09:16:00

+0

非常欢迎你。 – MahdeTo 2012-07-25 09:16:26

+0

哪个更好.. schedulor或sleep ????????? – user1545477 2012-07-25 09:18:02

0

我建议:

public void run() { 
    while(true) { 
     System.out.println(“beep”); 
     Thread.sleep(10000); 
    } 
} 

+的;

  • 简单
  • 如果你被打断

-'s您可以跟踪: - 你必须赶上InterruptedException的

如果你想停止:

  • 把代码放在catch语句中停止/暂停,并说myThread.interrupt();停止,再次启动它有点困难,您最好的选择是创建一个新的线程(完全相同)。资讯:How to start/stop/restart a thread in Java?
  • 把一个if语句在while循环,检查公共布尔isRunning,如果是假的,说continue;的复核一遍又一遍,直到它真的一遍,把你的蜂鸣代码在“道道通块'。
+0

@Nandkumar哈哈,当我点击编辑它显示编辑页面上的编辑,这正是我要做的! – 11684 2012-07-25 09:14:02

+0

因为我想OP要使用ScheduledExecutorService恐怕这不是真的是他的问题的答案... – fvu 2012-07-25 09:15:50

+0

也许,但这不是在问题中说明。 – 11684 2012-07-25 09:16:20