java向多线程中传递参数的三种⽅法详细介绍
在传统的同步开发模式下,当我们调⽤⼀个函数时,通过这个函数的参数将数据传⼊,并通过这个函数的返回值来返回最终的计算结果。但在多线程的异步开发模式下,数据的传递和返回和同步开发模式有很⼤的区别(java中如何给多线程中⼦线程传递参数)。由于线程的运⾏和结束是不可预料的,因此,在传递和返回数据时就⽆法象函数⼀样通过函数参数和return语句来返回数据。本⽂就以上原因介绍了⼏种⽤于向线程传递数据的⽅法,在下⼀篇⽂章中将介绍从线程中返回数据的⽅法。
欲先取之,必先予之。⼀般在使⽤线程时都需要有⼀些初始化数据,然后线程利⽤这些数据进⾏加⼯处理,并返回结果。在这个过程中最先要做的就是向线程中传递数据。
⼀、通过构造函数传递参数
public class MyThread1 extends Thread
{
private String name;
public MyThread1(String name)
{
java valueofthis.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 = Int(1000);
int n2 = Int(2000);
int n3 = Int(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();
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论