簡體   English   中英

如何在Java中運行不同的線程?

[英]How do I run different threads in Java?

我遇到線程問題。 我理解它們是如何工作的,但由於它們都使用相同的方法,我如何運行不同的線程來完成不同的事情,但同時呢?

對我來說,似乎他們總是使用相同的標准方法,這使得他們做同樣的事情。

所以,假設我有一個很大的.txt文件,我想通過每一行並對該行做一些事情。 在這種情況下,我想讓每個線程執行.txt文件的十分之一,但我不明白線程如何相互通信,以及它們如何組織,以便每個線程做正確的部分?

任何人都可以解釋或幫助我嗎? 非常感謝!

您可以擴展java.lang.Thread (或更好 - 實現java.lang.Runnable )並將參數傳遞給新對象的構造函數。 對於文本文件示例:

public FileReader implements Runnable {
    private int startLine;
    private int endLine;
    public FileReader(int startLine, int endLine) {
       // assign the params to the fields
    }

    public void run() {
       // use the params to read the appropriate lines
    }
}

然后你可以:

new Thread(new FileReader(1, 10)).start();
new Thread(new FileReader(11, 20)).start();
new Thread(new FileReader(21, 30)).start();

現在你可能應該看看java.util.Concurrent而不是修改原始線程(盡管它們當然可以在適當的地方使用)。 線程是一個很大的主題,但通過使用Concurrent包中明確定義的習語,它可以變得更加可忍受。

據我所知,線程是並行運行的獨立部分,並且始終存在控制並行運行的工作線程的主線程(通常是主線程)。 由於主線程負責該任務,因此不需要線程彼此通信。

在您的情況下,您可以讓主線程向工作線程發送參數,說明行號 - 對於thread1為0到10,對於thread2等為11到20.工作線程將這些數字作為輸入並相應地處理文件。

暫無
暫無

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

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