技术文摘
Java多线程入门:向线程传递数据的三种方式
2025-01-02 04:43:32 小编
Java多线程入门:向线程传递数据的三种方式
在Java多线程编程中,向线程传递数据是一项常见的任务。下面将介绍三种向线程传递数据的方式。
方式一:通过构造函数传递数据
这是一种简单而直接的方式。在创建线程类时,可以定义带参数的构造函数,将需要传递的数据作为参数传入。例如:
class MyThread extends Thread {
private int data;
public MyThread(int data) {
this.data = data;
}
@Override
public void run() {
System.out.println("接收到的数据:" + data);
}
}
在使用时,可以这样创建线程并传递数据:
public class Main {
public static void main(String[] args) {
MyThread thread = new MyThread(10);
thread.start();
}
}
方式二:通过变量和方法传递数据
定义一个包含数据的成员变量和设置数据的方法,在线程启动前调用设置方法传递数据。示例如下:
class AnotherThread extends Thread {
private int data;
public void setData(int data) {
this.data = data;
}
@Override
public void run() {
System.out.println("接收到的数据:" + data);
}
}
使用时:
public class Main {
public static void main(String[] args) {
AnotherThread thread = new AnotherThread();
thread.setData(20);
thread.start();
}
}
方式三:通过回调接口传递数据
定义一个回调接口,在主线程中实现该接口,并将实现对象传递给线程。线程在需要数据时通过回调接口获取。例如:
interface DataProvider {
int getData();
}
class CallbackThread extends Thread {
private DataProvider provider;
public CallbackThread(DataProvider provider) {
this.provider = provider;
}
@Override
public void run() {
System.out.println("接收到的数据:" + provider.getData());
}
}
使用时:
public class Main implements DataProvider {
@Override
public int getData() {
return 30;
}
public static void main(String[] args) {
Main main = new Main();
CallbackThread thread = new CallbackThread(main);
thread.start();
}
}
这三种方式各有特点,开发者可根据实际需求选择合适的方式向线程传递数据。