2012-07-27 32 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

相關問題