在java中以不同的前台进程以一定的间隔运行后台进程

时间:2012-03-22 09:07:48

标签: java multithreading

我在java程序中有3个函数:

  • 前两个用于轮询任何SNMP设备;他们所做的只是获取入站n出站流量。
  • 第三个函数根据输入的用户输入任意值。

主要功能是菜单驱动。它要求用户输入关于他们需要什么值的选择,因此使用第三个函数返回值。 虽然这种情况继续下去,但我希望前两个函数每5秒运行一次,它不应该混淆菜单驱动程序。

关于如何做到这一点的任何想法?

p.s。:我尝试了一些exapmles但是每次完成前两个函数时它们都会重置菜单(do while循环)。

3 个答案:

答案 0 :(得分:0)

在黑暗中刺穿 - 调用任务的Timer函数会起作用吗?

答案 1 :(得分:0)

对于前两个功能,您可以使用

while(true) {
 thread1.start();
 thread2.start();
 Thread.sleep(5000);
}

对于第三个线程,你应该制作运行背景的Deamon线程(通过thread3.setDeamon(true))。在每种线程的run方法中(不要忘记实现Runnable或者扩展Thread),你可以做出线程正在做的工作。祝你好运!

答案 2 :(得分:0)

您可能需要采用multithreading方式,因为SNMP通信可能会导致等待回复的超时超时,并且您不希望超时冻结接口(等待UI线程会很糟糕)。

为简单起见,可以使用一个线程来为“两个函数”进行通信,轮询function1()function2()(稍后可以使用{ {1}})。

主线程可以用于主输入(就像普通的java程序一样)。

线程逻辑的片段,其中Thread Poolfunction1()非常耗时(注意:没有 sleep ,因为cadencing将在您的函数中进行轮询,如果您需要降低轮询频率,请使用function2()wait(timeout) - 当用户单击“退出”菜单时快速退出):

notifyAll()