2014-06-09 339 views
0

我有一個線程將運行後臺,並在該線程實例化一個字符串值,4個線程將在該線程內運行..這是一個在android多線程的好習慣嗎?

這是一個基於android編碼的線程的良好做法?

String name = null; 

Thread a = new Thread(new First()); 
Thread b = new Thread(new Enemy()); 
Thread c = new Thread(new Enemy()); 
Thread d = new Thread(new Enemy()); 
Thread e = new Thread(new Enemy()); 
a.start(); 

class First implements Runnable { 
    public void run() { 
     name = "TARZAN"; 
     b.start(); 
     c.start(); 
     d.start(); 
     e.start(); 
    } 
} 

class Enemy implements Runnable { 
    public void run() { 
     System.out.println(Thread.currentThread().getName() + name); 
    } 
} 

這是從第一個線程執行4個可運行類的好習慣嗎?

+0

這不是真正的多線程。你不是'開始'那些線程,你只需'在'First'線程上'運行'它們。 – Thilo

+0

啊是更新了代碼start(),這是一個好習慣嗎?在線程內啓動一個線程?因爲我現在嘗試了它並且工作 –

+0

Android有很多專業的多線程類,你應該閱讀關於fwiw –

回答

2

線程不在線程內部運行。但是你所做的並不是產生4條新線程 - 你只是將它們稱爲第一線程中的方法。要將它們產生爲新線程,您需要使用.start(),而不是.run()。所以如果.run()真的是你想要的,那麼我會說這是一個壞主意,因爲根本沒有理由做這些線程。如果你真的想使用.start()並啓動一個新的線程,只要你有充足的理由這樣做,我會說它很好。

+0

所以它確定在線程內部運行多個線程?但同步方法比等待第一個線程完成並啓動其他線程更有效? –

+0

如果可以同時完成多個線程完成的大量工作,那麼是同步您需要的部分,並且應該更快地完成。如果你只是將整個線程包裝在一個同步塊中,那麼你不會放慢速度。它可能有點不尋常,需要類似的東西,但我可以看到一些用例。 –

+0

thnx Gabe Sechan! –

相關問題