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


向线程中传递数据的三种方法:

 

推荐使用第二种啊。。。。。。。。。


一、通过构造函数传递参数
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();
     }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值