java两个类A,B中分别都有一个线程,怎样能让A的线程中得到B类中线程的值,能举个简单的例子就最好了

如题所述

如果这线程不是做成死循环的,可利用JAVA的堆内存原理设置一下final static的对象。如果这两个线程都是一直在跑的可考虑用JDK1.5以后有的concurrent包中的队列LinkedBlockingQueue对象实现一个线程保存,另一个线程取出。当然这传和收线程的LinkedBlockingQueue对象必须是同一个。

保存线程中用LinkedBlockingQueue对象的put方法将其添加到这个对象的队列中;

取出线程中代码片段:
BlockingQueue<Object> queue;
public void run() {
while(true){
List<Object> list = new ArrayList<Object>();
try {
synchronized(Thread.currentThread()){
Thread.currentThread().wait(15000);
}
//waiter.await(5, TimeUnit.SECONDS);
int listSize = queue.drainTo(list, 2500);//用队列的方式将list中的数据一填充500个,一次操作填充500
if(listSize == 0){
continue;
}
//这里是具体的操作
logger.fatal("Get "+listSize+" ap5min object from Queue!");
list.clear();

/*list.add(obj);

if(list.size() == 100){
dao.batchSaveOrUpdate(list, 100);
list.clear();
}*/

} catch(Exception e) {
logger.error("保存数据出现异常:",e);
}
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-08-07
class A extends Thread{
B b = new B();

public void run(){
b.i = 10;或者把B中的i改为static修饰
然后用 B.i =10 也是可以的
}

}
class B extends Thread{
int i = 1/static int i = 1;

}
第2个回答  2012-08-07
可以将b类中的那个值设置为static,通过B.变量名来获取。
相似回答