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