[英]What is the most efficient way to implement multiple threads within a thread?
我的涉及線程的Uni作業需要幫助。 在分配中,我必須實現一個包含4個線程的程序,並且其中一個線程包含另一個線程。 我在下面繪制了一個圖表,以更好地解釋它:
最好/最有效的方法是什么? 我的教授對線程的解釋非常有限,從到目前為止在網絡上收集的內容來看,我將必須實現Runnable接口,並從主程序的run()方法中創建4個類,這可能會結束一團糟,因為我仍然沒有完全掌握Java中線程的概念。 如果有人可以在我可以學習更多的地方建議資源,請在此處發布。
到目前為止,這是我所了解的示例:
public class MainThread implements Runnable
{
/**
* The run method from the Runnable interface that
* executes the entire program.
*/
public void run()
{
class Controller implements Runnable
{
public void run()
{
class MiniWalker implements Runnable
{
public void run ()
{
}
}
}
}
class ObjectWalker implements Runnable
{
public void run ()
{
}
}
class GroupWalker implements Runnable
{
public void run ()
{
}
}
class YearWalker implements Runnable
{
public void run ()
{
}
}
}
/**
* The heart and core of this assignment.
*/
public static void main(String[] args)
{
(new Thread(new MainThread ())).start();
}
}
線程不包含其他線程。 線程可以控制其他線程,但這是完全不同的。 您的控制圖不必直接與您的類層次結構相關。
我建議您閱讀Brian Goetz的“ Java Concurrency In Practice”,並深入研究java.util下的並發類(例如Executor)。 它們會讓您的生活比原始線程更好。
最好的起點是http://docs.oracle.com/javase/tutorial/essential/concurrency/procthread.html 。 它將使您對Java中的並發有基本的了解。 如果不描述該線程的功能(為什么需要創建它們),則很難寫出哪種選擇是最佳的。
值得一提的是,您可以生成線程而無需對新類進行顯式編碼。
public static void main(String[] args) {
new Thread(new Runnable() {
@Override
public void run() {
}
}).start();
}
道格·李(Doug Lee)的並發編程是另一個很好的資源(並且幾乎所有內容在Google圖書上都是免費的)。 值得一看的是ExecutorService或ForkJoinPool 。 另外, 通讀javadocs,它們相當不錯。
可能值得嘗試將您的應用程序分解為本質上是任務的任務,然后將其放入線程池中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.