java创建线程代码_Java创建与结束线程代码示例
本文講述了在Java中如何創建和結束線程的最基本方法,只針對于Java初學者。一些高級知識如線程同步、調度、線程池等內容將會在后續章節中逐步深入。
創建線程
創建普通線程有兩種方式,繼承Thread類或實現Runnable接口。示例如下。
方法1:繼承Thread類
創建方法示例:
public class MyThread1 extends Thread {
@Override
public void run() {
//TODO Auto-generated method stub
super.run();
System.out.println("Execute thread:MyThread1");
}
}
方法2:實現Runnable接口
創建方法示例:
public class MyRunnable1 implements Runnable {
@Override
public void run() {
//TODO Auto-generated method stub
System.out.println("Execute thread:MyRunnable1");
}
}
運行線程
針對上述兩種方法,調用線程開始運行的方法分別如下。
方式示例1:new MyThread1().start();
方法示例2:new Thread(new MyRunnable1()).start();
停止線程
請不要采取已經過時(deprecated)的java.lang.Thread.stop方法,不論你因為何種原因需要暫?;蛲耆Y束當前正在運行的線程。
常見的退出線程的方法如下。
方式1:線程自動退出
線程執行完畢,自動退出。例如網絡下載線程,當后臺下載完后,線程自動退出。
方法2:使用interrupt主動退出
在主線程中,調用線程對象的interrupt()方法,設置線程狀態。
final Thread t = new MyThread2();
t.start();
try {
Thread.sleep(500);
} catch(InterruptedException e) {
e.printStackTrace();
}
t.interrupt();
在子線程中,調用isInterrupted()方法判斷線程狀態。如果返回true,則可以結束線程運行。如下示例代碼,在線程中有一個while循環,每次循環都會判斷線程狀態,如果為true,則停止循環,退出線程。
public class MyThread2 extends Thread {
@Override
public void run() {
super.run();
while(true) {
// Cancel thread when call interrupt() method
if (Thread.currentThread().isInterrupted()) {
break;
}
}
}
}
在主線程中調用interrupt設置狀態,在子線程中通過isInterrupted獲取狀態,是最好的結束線程的方法。注意主線程中一旦調用interrupt,子線程中相關的sleep, wait方法在執行時會拋出InterruptedException異常,此時也可以通過捕獲這種異常來結束線程。
方式3:使用預設標志主動退出
預設一個退出標志,通過判斷標志的值結束線程運行。這種情況常見于循環執行中的任務。在每次循環時,判斷標志值。如下示例,在線程while循環中判斷mCancelFlag標志。
public class MyThread3 extends Thread {
private boolean mCancelFlag;
@Override
public void run() {
super.run();
System.out.println("Thread start");
while (mCancelFlag) {
// Cancel thread when call interrupt() method
break;
}
System.out.println("Thread over");
}
public void cancelThread() {
mCancelFlag = true;
}
}
當主線程希望主動結束線程時,調用線程的cancelThread方法設置mCancelFlag即可。
final MyThread3 t = new MyThread3();
t.start();
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
// stop thread
t.cancelThread();
如果在線程執行時,需要主動退出線程,最佳的方式為方法2。用戶根據實際情況,例如更多的狀態控制,也可以使用方法3。
一句話總結
創建線程:繼承Thread類或實現Runnable接口。
結束線程:調用interrupt方法。
總結
以上就是本文關于Java創建與結束線程代碼示例的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站:Java多線程之線程通信生產者消費者模式及等待喚醒機制代碼詳解、Java編程之多線程死鎖與線程間通信簡單實現代碼、Java編程利用socket多線程訪問服務器文件代碼示例等,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
總結
以上是生活随笔為你收集整理的java创建线程代码_Java创建与结束线程代码示例的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: java 定时删除_Java编写定时删除
- 下一篇: java 动态创建实例_java – 有
