2012-07-27 179 views

回答

0

不可以。你有主线程。睡眠会暂停它。如果你想在不影响主线程的情况下运行某些东西,你需要将它从主线程中分离出来,通过使用addiotnal线程

2

你不能暂停一个“class”本身。一个类只是一个“死”的容器。

你可以做什么是暂停一个线程或任务。

通常,您会创建一个单独的线程来运行您想暂停的任务,并在您喜欢时暂停它 - 因为它运行在单独的线程中,它不会挂起整个程序。

见这个简单的例子,你可以运行,以便更好地理解如何线程可以并行运行:

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"); 
} 
4

你不暂停课程,您暂停线程。在暂停您的唯一线程的那一刻,您也会暂停整个应用程序。因此,无法暂停您的唯一线程,并期望应用程序将继续运行。如果您希望您的应用程序不仅仅是等待,您将需要多个线程。

3

我想你在这里混淆了一些概念。类和对象不运行。线程运行,它们运行的​​是由类和对象定义的指令(代码)。

所以不,不能暂停一个Class或Object,只能是一个Thread。此外,如果你的应用程序是单线程的,那么你只有一个“主”线程,如果你暂停该线程,那么你的整个应用程序将暂停。

+0

对象不定义代码;只有班。一个对象是一个类的实例,只有内存分配给定义的对象变量;代码为同一类的所有实例共享。 ...用于在运行时生成或加载代码的类的小例外,在这种情况下,该类的对象可能暂时在内存(堆)中具有字节码,但在JVM加载之前它不可执行。 – 2012-07-27 21:49:39