永发信息网

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

答案:3  悬赏:70  手机版
解决时间 2021-01-12 09:06
java两个类A,B中分别都有一个线程,怎样能让A的线程中得到B类中线程的值,能举个简单的例子就最好了
最佳答案
如果这线程不是做成死循环的,可利用JAVA的堆内存原理设置一下final static的对象。如果这两个线程都是一直在跑的可考虑用JDK1.5以后有的concurrent包中的队列LinkedBlockingQueue对象实现一个线程保存,另一个线程取出。当然这传和收线程的LinkedBlockingQueue对象必须是同一个。

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

取出线程中代码片段:
BlockingQueue queue;
public void run() {
while(true){
List list = new ArrayList();
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();



} catch(Exception e) {
logger.error("保存数据出现异常:",e);
}
}
}
全部回答
  • 1楼网友:大漠
  • 2021-01-12 03:03
可以将b类中的那个值设置为static,通过B.变量名来获取。
  • 2楼网友:长青诗
  • 2021-01-12 01:32
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;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯