为了账号安全,请及时绑定邮箱和手机立即绑定

main函数和Junit执行相同代码 为什么结果不同

main函数和Junit执行相同代码 为什么结果不同

fenkapian 2018-04-29 11:02:15
package com.umbrella.km; import org.junit.Test; import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit; public class MyContainer {     volatile List list = new ArrayList();     public void add(Object o) {         list.add(o);     }     public int size() {         return list.size();     }     @Test     public void test() {         MyContainer mc = new MyContainer();         new Thread(() -> {             for (int i = 0; i < 10; i++) {                 System.out.println("add " + i);                 mc.add(new Object());                 try {                     TimeUnit.SECONDS.sleep(1);                 } catch (InterruptedException e) {                     e.printStackTrace();                 }             }         }, "t1").start();         new Thread(() -> {             while (true) {                 if (mc.size() == 5) {                     break;                 }             }             System.out.println("t2 stop");         }, "t2").start();     }     public static void main(String[] args) {         MyContainer mc = new MyContainer();         new Thread(() -> {             for (int i = 0; i < 10; i++) {                 System.out.println("add " + i);                 mc.add(new Object());                 try {                     TimeUnit.SECONDS.sleep(1);                 } catch (InterruptedException e) {                     e.printStackTrace();                 }             }         }, "t1").start();         new Thread(() -> {             while (true) {                 if (mc.size() == 5) {                     break;                 }             }             System.out.println("t2 stop");         }, "t2").start();     } }现在想要在t1线程的长度为5时,t2线程就终止。但只有main函数能正确执行,Junit的测试类就不行,为什么呢?
查看完整描述

1 回答

已采纳
?
zzZerOrz

TA贡献101条经验 获得超28个赞

ju不支持多线程

查看完整回答
反对 回复 2018-04-30
  • 1 回答
  • 0 关注
  • 1829 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信