必须创建线程并运行它5秒钟,然后我想停止。我怎么能这样做?
我无法用时间/毫秒做任何事情。
THX。
答案 0 :(得分:3)
java中的线程是合作的 - 你不能强行停止一个线程。你可以做的是发信号停止(调用中断()或举起一个标志)然后代码自愿停止。
所以:
开始运行您的工作线程。在其中重复(在主工作循环内)检查isInterrupted()
并捕获任何InterruptedExceptions
- 在这种情况下退出线程。
启动TimerTask运行5秒,然后在工作线程上调用interrupt()
。
更新:海报解释说他已经有了一个正常工作的代码,他只需要异步运行它而不会阻止UI。
解决方案:设置AsyncTask
并在其doInBackground()
方法中运行您的代码。
答案 1 :(得分:2)
答案 2 :(得分:0)
很抱歉这里不清楚。这是我对同步线程的例子。 我的函数listen()运行5秒然后退出。 Listen()是一个UDP监听器......
我遇到此代码的问题,它会停止我的主线程(我的手机无响应),直到列出的()完成其5秒运行。我想使用异步线程来避免我的手机冻结。当我说我不能随时间做任何事情时,我试图说我不能在listen()函数中放置某种计时器然后测量经过时间然后在5秒后退出。不能这样做。
Thread t = new Thread() {
public void run() {
try {
listen();
} catch (IOException e) {
Log.d(TAG, "IOException (Discovery) " + e);
e.printStackTrace();
}
synchronized (this) {
notifyAll();
}
}
};
synchronized (t) {
t.start();
try {
t.join(5000); // 5 sec
} catch (InterruptedException e) {
e.printStackTrace();
}
}