Java:如何暂停一个类的运行?
当我使用Java:如何暂停一个类的运行?,java,Java,当我使用Thread.sleep()时,它暂停我的整个程序。是否有任何东西会在不使用多线程的情况下暂停一个类?否。您不能。你有主线。睡眠会使它暂停。如果希望停止运行某个对象而不影响主线程,则需要将其从主线程中分叉,通过使用附加线程,不能暂停“类”本身。类只是一个“死”容器 您可以暂停线程或任务 通常,您会创建一个单独的线程来运行要暂停的任务,并在需要时暂停它-因为它在单独的线程中运行,所以不会挂起整个程序 请参阅此简单示例,您可以运行该示例以更好地了解线程如何并行运行: public stati
Thread.sleep()时代码>,它暂停我的整个程序。是否有任何东西会在不使用多线程的情况下暂停一个类?否。您不能。你有主线。睡眠会使它暂停。如果希望停止运行某个对象而不影响主线程,则需要将其从主线程中分叉,通过使用附加线程,不能暂停“类”本身。类只是一个“死”容器
您可以暂停线程或任务
通常,您会创建一个单独的线程来运行要暂停的任务,并在需要时暂停它-因为它在单独的线程中运行,所以不会挂起整个程序
请参阅此简单示例,您可以运行该示例以更好地了解线程如何并行运行:
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");
}
您不暂停类,而是暂停线程。在暂停您的唯一线程的那一刻,您也暂停了整个应用程序。因此,没有办法暂停您唯一的线程并期望应用程序继续运行。如果您希望应用程序不仅仅是等待,那么您需要多个线程。我认为您在这里混淆了一些概念。类和对象不运行。线程运行,它们运行的是由类和对象定义的指令(代码)
因此,不能暂停类或对象,只能暂停线程。此外,如果您的应用程序是单线程的,那么您只有一个“主”线程,如果暂停该线程,那么整个应用程序都将暂停。对象不定义代码;只有班级。一个对象是一个类的实例,并且只为定义的对象变量分配了内存;为同一类的所有实例共享代码。。。除了用于在运行时生成或加载代码的类之外,在这种情况下,该类的对象可能暂时在内存(堆)中有字节码,但在JVM加载之前,它是不可执行的。