如何制作一个while循环,每隔一秒不会冻结应用程序?例如,使用Thread.Sleep()冻结线程。有谁知道吗?
答案 0 :(得分:1)
public class Test implements Runnable {
@Override
public void run() {
while(true){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// Your Statement goes here
}
}
public static void main(String[] args) {
Test test= new Test();
Thread t= new Thread(test);
t.start();
}
}
答案 1 :(得分:0)
您没有指定语言。 我将提供一个c ++示例,该概念在其他语言中应该类似。
首先,这将使主线程处于休眠状态:
int main(int, char**)
{
while(true)
{
sleep(1); // Put current thread to sleep;
// do some work.
}
return 0;
}
另一方面,这将创建一个工作线程。主线程将保持活动状态。
#include <iostream>
#include <thread>
void doWork()
{
while(true)
{
// Do some work;
sleep(1); // Rest
std::cout << "hi from worker." << std::endl;
}
}
int main(int, char**)
{
std::thread worker(&doWork);
std::cout << "hello from main thread, the worker thread is busy." << std::endl;
worker.join();
return 0;
}
代码未经测试。刚试过这个,看看它的实际应用:http://ideone.com/aEVFi
线程需要c ++ 11。另请注意,在上面的代码中,主线程将无限期地等待连接,因为工作线程永远不会终止。
答案 2 :(得分:0)
将循环和Thread.Sleep()放在工作线程中。