java向线程中传递参数
来源:互联网 发布:淘宝网免费下载 编辑:程序博客网 时间:2024/04/26 07:30
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.csdn.net/tiandizhushen/article/details/9849891
- java向线程中传递参数
- java向线程中传递参数的方法
- java向线程中传递参数的方法
- java向多线程中传递参数
- 如何向线程传递参数
- 如何向线程传递参数
- 如何向线程传递参数
- 向线程方法传递参数
- 如何向线程传递参数
- C#中向线程传递参数的方法
- 线程中传递参数
- 向Servlet中传递参数
- Java 向线程传递数据
- Delphi利用jni向java程序中传递参数
- Dos命令行中怎么向Java程序传递参数
- java向多线程中传递参数的三种方法
- java中向匿名内部类传递参数
- 【转】如何向线程传递参数
- cocos2d-x屏幕适配
- mysql5.5安装
- Ruby for Rails 实践1
- oracle获取字符串长度函数length()和hengthb()
- 共模滤波器
- java向线程中传递参数
- linux各文件夹的作用
- 山沟沟里的实业路(2)
- Managed Debugging Assistants (zz)
- IOS--UIScrollView delegate 协议-
- 查询表字段类型
- [cocos2d-x] --- CCNode类详解
- 看13位CEO、创始人和高管如何提高工作效率
- YII简单的文件下载