我怎样才能使一个while循环每秒做一些不冻结应用程序的事情?例如使用 Thread.Sleep() 冻结线程。有人知道吗?
问问题
101 次
3 回答
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();
}
}
于 2012-08-24T04:32:50.993 回答
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。另外,请注意,在上面的代码中,主线程将无限等待加入,因为工作线程永远不会终止。
于 2012-08-24T04:10:29.217 回答
0
将循环和 Thread.Sleep() 放入工作线程中。
于 2012-08-24T04:11:32.657 回答