首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将参数传递给Java线程?

如何将参数传递给Java线程?
EN

Stack Overflow用户
提问于 2019-06-11 06:34:13
回答 2查看 0关注 0票数 0

谁能告诉我如何将参数传递给线程?

此外,它如何为匿名类工作?

EN

回答 2

Stack Overflow用户

发布于 2019-06-11 14:49:03

通过Runnable或Thread类的构造函数

代码语言:javascript
复制
class MyThread extends Thread {

    private String to;

    public MyThread(String to) {
        this.to = to;
    }

    @Override
    public void run() {
        System.out.println("hello " + to);
    }
}

public static void main(String[] args) {
    new MyThread("world!").start();
}
票数 0
EN

Stack Overflow用户

发布于 2019-06-11 16:28:31

这个答案来得很晚,但也许有人会发现它很有用。它是关于如何将参数传递给a Runnable甚至没有声明命名类(对于内联器很方便):

代码语言:javascript
复制
String someValue = "Just a demo, really...";
new Thread(new Runnable() {
    private String myParam;
    public Runnable init(String myParam) {
        this.myParam = myParam;
        return this;
    }
    @Override
    public void run() {
        System.out.println("This is called from another thread.");
        System.out.println(this.myParam);
    }
}.init(someValue)).start();

当然,您可以将执行推迟start到一些更方便或适当的时刻。这取决于你的init方法签名(所以它可能需要更多和/或不同的论点),当然甚至是它的名字,但基本上你会有一个想法。

事实上,还有另一种方法可以使用初始化程序块将参数传递给匿名类。考虑一下:

代码语言:javascript
复制
String someValue = "Another demo, no serious thing...";
int anotherValue = 42;

new Thread(new Runnable() {
    private String myParam;
    private int myOtherParam;
    {
        this.myParam = someValue;
        this.myOtherParam = anotherValue;
    }
    @Override
    public void run() {
        System.out.println("This comes from another thread.");
        System.out.println(this.myParam + ", " + this.myOtherParam);
    }
}).start();

所有这些都发生在初始化程序块内部。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100006992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档