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();
????}
}現(xiàn)在想要在t1線程的長度為5時,t2線程就終止。但只有main函數(shù)能正確執(zhí)行,Junit的測試類就不行,為什么呢?
添加回答
舉報
0/150
提交
取消