微科社区,轻松开发从此开始! 请登陆 免费注册

微科社区

当前位置:首页 > Java平台 > J2SE >

java线程测试-一个奇怪的状况-执行未完成直接结

时间:2014-04-10 09:46  浏览:努力统计中...
importorg.junit.Test; /** *同步线程测试 *@authorjview * */ publicclasstestSynchronized{ @Test publicvoidtestSynchronizedThread(){ System.out.println( -------testSynchronizedThread---- ); Threadt1=newThread(newTheardTest( t1 )); t1.sta
import org.junit.Test;

/**
 * 同步线程测试
 * @author jview
 *
 */
public class testSynchronized {
@Test
public void testSynchronizedThread(){
System.out.println("-------testSynchronizedThread----");
Thread t1 = new Thread(new TheardTest("t1"));
t1.start();
Thread t2 = new Thread(new TheardTest("t2"));
t2.start();
System.out.println("-------testSynchronizedThread-end---");
}
}

class TheardTest implements Runnable{
public TheardTest(){

}
public TheardTest(String name){
this.name=name;
}
private String name;
public void run(){
if(name!=null)
System.out.println("----thread-name="+name);

SyncTest st = new SyncTest();
st.sleep4();
}
}

class SyncTest{
public synchronized void sleep4(){
try {
System.out.println("-------sleep4--");
Thread.sleep(4000);
System.out.println("-------sleep4-end-");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}


多次执行结果不一样
结果1:
-------testSynchronizedThread----
-------testSynchronizedThread-end---
----thread-name=t1
-------sleep4--

结果2:
-------testSynchronizedThread----
-------testSynchronizedThread-end---
----thread-name=t2
-------sleep4--
----thread-name=t1
-------sleep4--

结果3:
-------testSynchronizedThread----
-------testSynchronizedThread-end---
----thread-name=t2


不加synchronized 实际运行效果也一样,都是这样子的
线程执行没结束就退出了。

有人明白原因吗

main方法呢

用junit测试就会这样。
简单处理的话加上下面这个方法即可。
public void tearDown(){
    System.in.read();
}

还是在主函数里创建对象再调用吧

原来这样,习惯了junit,没想到会是这个问题,谢了
    顶一下
    (0)
    0%
    踩一下
    (0)
    0%
    ------分隔线------