本帖最后由 杨同旺 于 2013-4-23 13:17 编辑
关于卖票的多线程的问题,代码:
import org.junit.Test;
public class TestTest
{
public static void main(String[] args)//当使用main方法进行测试,没有问题,票能卖完.
{
Person p1 = new Person();
Person p2 = new Person();
Person p3 = new Person();
Person p4 = new Person();
p1.start();
p2.start();
p3.start();
p4.start();
}
@Test
public void method()//当使用JUnit进行测试的时候,票总是出现卖不完的情况,为什么呢?
{
Person p1 = new Person();
Person p2 = new Person();
Person p3 = new Person();
Person p4 = new Person();
p1.start();
p2.start();
p3.start();
p4.start();
}
}
class Person extends Thread
{
private static int ticket = 200;
@Override
public void run()
{
while (true)
{
if(ticket==0)
break;
System.out.println(Thread.currentThread().getName() + "-----------" + ticket--);
}
}
}
为什么JUnit的测试结果会产生错误?
|