当我使用时Thread.sleep();
,它会暂停我的整个程序。有没有什么可以在不使用多线程的情况下暂停一个类?
问问题
799 次
4 回答
4
您不会暂停课程,而是暂停线程。在您暂停唯一线程的那一刻,您也暂停了整个应用程序。所以没有办法暂停你唯一的线程并期望应用程序继续运行。如果您希望您的应用程序做的不仅仅是等待,您将需要多个线程。
于 2012-07-27T15:01:40.867 回答
3
我认为您在这里混淆了一些概念。类和对象不运行。线程运行,它们运行的是类和对象定义的指令(代码)。
所以不,你不能暂停一个类或对象,只能暂停一个线程。此外,如果您的应用程序是单线程的,那么您只有一个“主”线程,如果您暂停该线程,那么您的整个应用程序将暂停。
于 2012-07-27T15:01:54.300 回答
2
您不能暂停“课程”本身。一个类只是一个“死”的容器。
您可以做的是暂停线程或任务。
通常,您会创建一个单独的线程来运行您想要暂停的任务,并在您喜欢时暂停它 - 因为它在单独的线程中运行,它不会挂起您的整个程序。
请参阅这个简单的示例,您可以运行该示例以更好地了解线程如何并行运行:
public static void main(String[] args) throws InterruptedException {
Runnable lazyTask = new Runnable() {
@Override
public void run() {
System.out.println("Lazy: I feel like sleeping for a second");
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {}
System.out.println("Lazy: I feel better now");
}
};
new Thread(lazyTask).start();
//Let's wait a bit until the lazy task goes to sleep
Thread.sleep(100);
//now you can do something that will not hang
System.out.println("Main: I'm sleeping too, but only half a second");
Thread.sleep(500);
System.out.println("Main: And I can continue my job while that lazy task is still asleep");
}
于 2012-07-27T15:01:39.823 回答
0
你不能。你有主线程。睡眠会暂停它。如果你想停止运行某些东西而不影响主线程,你需要从主线程分叉它,通过使用附加线程
于 2012-07-27T15:01:27.777 回答