java中如何给Runnable线程传递参数?

向线程中传递数据的三种方法:
一、通过构造函数传递参数
public  class  MyThread1 extends  Thread
{
    private  String name;
    public  MyThread1(String name)
    {
        this.name = name;
    }
    public  void  run()
    {
        System.out.println("hello "  + name);
    }
    public  static  void  main(String[] args)
    {
        Thread thread = new  MyThread1("world");
        thread.start();        
    }
}
二、通过变量和方法传递数据
public  class  MyThread2 implements  Runnable
{
    private  String name;
    public  void  setName(String name)
    {
        this.name = name;
    }
    public  void  run()
    {
        System.out.println("hello "  + name);
    }
    public  static  void  main(String[] args)
    {
        MyThread2 myThread = new  MyThread2();
        myThread.setName("world");
        Thread thread = new  Thread(myThread);
        thread.start();
    }
}
三、通过回调函数传递数据
class  Data
{
    public  int  value = 0;
}
class  Work
{
    public  void  process(Data data, Integer numbers)
    {
        for  (int  n : numbers)
        {
            data.value += n;
        }
    }
}
public  class  MyThread3 extends  Thread
{
    private  Work work;
 
    public  MyThread3(Work work)
    {
        this.work = work;
    }
    public  void  run()
    {
        java.util.Random random = new  java.util.Random();
        Data data = new  Data();
        int  n1 = random.nextInt(1000);
        int  n2 = random.nextInt(2000);
        int  n3 = random.nextInt(3000);
        work.process(data, n1, n2, n3);   // 使用回调函数
        System.out.println(String.valueOf(n1) + "+"  + String.valueOf(n2) + "+"
                + String.valueOf(n3) + "="  + data.value);
    }
    public  static  void  main(String[] args)
    {
        Thread thread = new  MyThread3(new  Work());
        thread.start();
    }

}



https://blog.csdn.net/marvel_cheng/article/details/51992025

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值