稍微混淆与Java的线程

时间:2015-04-07 06:27:43

标签: java multithreading

我目前正与Netty.io合作创建一个实验项目,在该项目中,我将多个服务器实例(不同的侦听端口)嵌套到一个应用程序中。然而,Netty几乎接管了ChannelFuture绑定的线程。 Blocks the thread如果愿意的话。

正因为如此,我已经决定我需要创建一个TPS设置,类似于TPC(每个客户端的线程),应用程序将为每个服务器实例使用一个线程。

然而,这是一个问题。我创建线程的唯一一次是当我需要执行一个runnable方法时;但是现在我试图将一个类的整个实例绑定到该线程,并且我对如何解决这个问题感到很困惑。

我知道的唯一方法(即使经过大约两个小时的研究)也可以模拟这一点,但是它感觉不对。

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());
    }

}

上面的代码是可执行的,但这是正确的方法吗?这对我来说似乎很狡猾,但我对此并没有多少经验。

1 个答案:

答案 0 :(得分:-4)

据我所知,这是一个"如何在Java问题中创建一个线程"。您的示例是创建线程的可接受方式。为简洁起见,也可以使用匿名内部类:

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