2016-03-31 20 views
1

Aşağıdaki kodda, ana iş parçacığı, iş parçacığı işlenene kadar neden bekler.Ana iş parçacığı neden bekler

Driver.java Burada Sürücü sınıfında

public class Driver { 
public static void main(String[] args) throws InterruptedException { 
    Thread t = new Thread(new ThreadRunner()); 
    t.start(); 
} 
} 

ThreadRunner.java

public class ThreadRunner implements Runnable { 
@Override 
public void run() { 
    for (int i = 0; i < 10; i++) { 
     System.out.println("Child thread" + i); 
    } 
} 
} 

't.start()' çağırdıktan sonra programı çıkmak gerekmez mi? Birleşim kullanmıyorum ama hala yeni iş parçacığı 'ThreadRunner' çalışana kadar ana iş parçacığı bekler. Çünkü java'da ana iplik (ana yöntemle başlatılır) her zaman tüm dişler kapanana kadar bekler mi?

cevap

5

Ana iş parçacığı, diğer iş parçacığı başlatıldıktan hemen sonra çıkar, ancak bir bütün olarak Java programı daemon olmayan iş parçacığı olduğu sürece çalışmaya devam eder (özellikle istemediğiniz sürece, yeni iş parçacıkları daemon olmaz.).

İş parçacığı bir daemon dizisi yapmak çok kolaydır: Başlamadan önce t.setDaemon(true);'u arayın.

2

Asıl iş parçacığı aslında beklemiyor. Ana iş parçacığı tamamlar. Program, non-daemon olmayan bir Thread oluşturduğunuzdan çıkmıyor. Sadece daemon ipleri kaldığında JVM kapanacaktır. 'System.out.println ("ana iş parçacığı")' nde bulunan 12

-1

; 't.start()'

daha sonra ana iş parçacığının ilk olduğunu görebilirsiniz.

İlgili konular