java两个类A,B中分别都有一个线程,怎样能让A的线程中得到B类中线程的值...
发布网友
发布时间:2022-04-25 12:16
我来回答
共3个回答
热心网友
时间:2022-04-08 20:13
如果这线程不是做成死循环的,可利用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){
.batchSaveOrUpdate(list, 100);
list.clear();
}*/
} catch(Exception e) {
logger.error("保存数据出现异常:",e);
}
}
}
热心网友
时间:2022-04-08 21:31
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;
}
热心网友
时间:2022-04-08 23:06
可以将b类中的那个值设置为static,通过B.变量名来获取。