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



这是我的代码

foo(a, b)
{
    c = a.item;
    bar(c);
    b = a;
    b.count--;
}

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

public void run
{
    bar(c);
}

问题是我不知道如何让c运行。谁能告诉我怎么做?

我修改了你的代码,使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方法。

我还想指出,使用这种方法,运行barThread只是在它的快乐的方式,你没有办法监控它的进度。您可能希望添加一些更健壮的逻辑来处理程序流。(如果需要的话)

创建一个Runnable实例,该实例在其构造函数中接受一个值。

最新更新