如何用新线程替换函数调用,但是将变量传递给线程

时间:2011-09-07 11:53:58

标签: java multithreading

这是我的代码(有点)

foo(a, b)
{
    c = a.item;

    bar(c);
    b = a;
    b.count--;
}

我希望bar(c)在一个单独的线程中运行。 到目前为止,这就是我所拥有的: 我使类实现runnable。 我用t = new Thread(this, "Demo Thread"); t.start();替换了bar(c)行 然后我在代码中创建一个函数,如下所示:

public void run
{
    bar(c);
}

问题是我不知道如何让c进入运行状态。任何人都可以解释我怎么做到这一点?

2 个答案:

答案 0 :(得分:3)

我修改了你的代码,在自己的线程中运行bar(c)

foo(a, b)
{
    final c = a.item;
    new Thread() { 
        @Override
        public void run() {
            bar(c);
        }
    }.start();
    b = a;
    b.count--;
}

基本上你正在做的是创建一个新的Thread对象,它只会调用bar(c)。您还需要在方法中设置c final,以便允许您将其传递给匿名内部类的run方法。

我还要注意,使用此方法,运行Thread的{​​{1}}只是以快乐方式运行,您无法监控其进度。您可能希望添加一些更强大的逻辑来处理程序流。 (如果需要的话。)

答案 1 :(得分:1)

创建一个Runnable实例,在其构造函数中获取一个值。在线程中运行Runnable。