java向线程中传递参数

本文介绍了三种在Java中向线程传递参数的方法:1) 通过构造函数,2) 使用变量和方法,3) 利用回调函数。以具体的代码示例展示了如何在不同线程间传递数据,包括创建线程、设置参数和处理数据。最后提到了回调函数的概念,它是事件处理的一种方式,常见于Windows API中,并在Java示例中通过调用process方法实现数据交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、通过构造函数传递参数

   public class CreateIndexThread extends Thread {


public boolean flag = true;
private String d;
private String e;
private String f;


public static void main(String[] args) {
new CreateIndexThread("user1", "d:/index", "").start();
}


public CreateIndexThread(String username, String route, String field) {


d = username;
e = route;
f = field;
}


public synchronized void run() {


while (flag) {
System.out.println("线程已启动,每隔1分钟检索一次........");
DataOperator db = new DataOperator();
System.out.println("ddd:" + d);
String sql1 = "select * from " + d + " where state=0";
ResultSet r1 = db.executeQuery(sql1);
try {
try {
while (r1.next()) {
System.out.println("建立索引用户名:" + d);
new LuceneFindManagerImpl().CreateIndex(d, e, f);


}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


Thread.sleep(1000 * 5);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


}
}
}

2、通过变量和方法传递数据

public class CreateIndexThreadimplements Runnable

 private String d;
    public void setD(String d)
    {
        this.d= d;
    }

public static void main(String[] args)
    {
        CreateIndexThread c= new CreateIndexThread();
        c.setD("world");
        Thread thread = new Thread(c);
        thread.start();
    }

3、通过回调函数传递数据

package mythread;

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();
    }
}

在上面代码中的process方法被称为回调函数。从本质上说,回调函数就是事件函数。

Windows API中常使用回调函数和调用API的程序之间进行数据交互。

因此,调用回调函数的过程就是最原始的引发事件的过程。

在这个例子中调用了process方法来获得数据也就相当于在run方法中引发了一个事件。

回调函数http://blog.youkuaiyun.com/tiandizhushen/article/details/9849891

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值