java线程未执行完成,java线程测试-一个奇怪的景况-执行未完成直接结束了
java線程測試-一個奇怪的狀況-執行未完成直接結束了
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();
}
------解決方案--------------------
還是在主函數里創建對象再調用吧
總結
以上是生活随笔為你收集整理的java线程未执行完成,java线程测试-一个奇怪的景况-执行未完成直接结束了的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php下dat函数e,PHP 常用函数记
- 下一篇: 人人贷贷款流程