hello_java_ 2014-09-28 08:51 采纳率: 0%
浏览 1809

关于Java多线程的问题

有两个类,一个主类,一个线程类。我主类里面有一个变量,需要线程类去处理。有什么办法保证我的线程类里面处理完之后 主类再使用这个变量么?
简化的例子:
主类

public class A {
public static List<String> items = new ArrayList<String>();

public static void main(String[] args){
    for(int time = 0; time < 3; time++){
        new B().start();
    }
    for(int i = 0; i<items.size();i++){
        System.out.print(items.get(i) + "\n");
    }
}

}

线程类

public class B extends Thread{

@Override
public void run(){
    //比较复杂的数据处理
    for(int i = 0; i < 5; i++) {
        A.items.add("" + i);
    }
}

}

请问要怎么保证所有的线程都跑完,再使用主类变量?当然不要去停线程。谢谢。

  • 写回答

3条回答 默认 最新

  • -天宇 2014-09-28 09:38
    关注

    CountDownLatch 可以实现

    简单点来讲可以设置一个信号量,主线程不断监测这个信号量,不满足条件就一直阻塞,直到满足条件。信号量在多线程中修改

    评论

报告相同问题?

悬赏问题

  • ¥15 Pwm双极模式H桥驱动控制电机
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题