簡體   English   中英

對Java線程略有困惑

[英]Slightly confused on threading with Java

我目前正在與Netty.io一起創建一個實驗項目,在該項目中,我將多個服務器實例(不同的偵聽端口)嵌套到單個應用程序中。 但是Netty幾乎接管了ChannelFuture綁定到的線程。 如果願意,則Blocks the thread

因此,我決定需要創建一個TPS設置,類似於TPC(每個客戶端線程),應用程序將為每個服務器實例使用一個線程。

但是有一個問題。 我唯一一次創建線程是在需要執行可運行方法時。 但是,現在我試圖將一個類的整個實例綁定到線程,並且我對如何處理它感到非常困惑。

我知道的唯一方法(即使經過大約兩個小時的研究)也可以做到以下幾點,但是感覺不對。

public class Foo {

    public FooBar fooBar;
    private Foo() {
        System.out.println("Foo Thread: " + Thread.currentThread().getId());
        new Thread(new Bar(this)).start();
    }

    public static void main(String[] args) {
        new Foo();
    }
}

class Bar implements Runnable {

    Foo foo;
    public Bar(Foo foo) {
        this.foo = foo;
    }

    @Override
    public void run() {
        foo.fooBar = new FooBar();
    }
}

class FooBar {

    public FooBar() {
        System.out.println("FooBar Thread: " + Thread.currentThread().getId());
    }

}

上面的代碼是可執行的,但這是正確的方法嗎? 在我看來,這確實有點黑,但是我對此沒有太多經驗。

據我了解,這是“如何在Java問題中創建線程”。 您的示例是創建線程的可接受方法。 為了簡潔起見,還可以使用匿名內部類:

(new Thread() { public void run() { /* enter code here */ }).start();

暫無
暫無

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

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