簡體   English   中英

在一個線程中實現多個線程的最有效方法是什么?

[英]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圖書上都是免費的)。 值得一看的是ExecutorServiceForkJoinPool 另外, 通讀javadocs,它們相當不錯。

可能值得嘗試將您的應用程序分解為本質上是任務的任務,然后將其放入線程池中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM