方法一 stop方法
thread t = new thread(new mythread());
t.stop();
非常不友好,該方法已經被廢棄。使用該方法,線程直接停止,可能很多資源沒有關閉,還有可能造成死鎖。
方法二 interrupt方法
public class sleepthread implements runnable
{
/**
* 線程運作時執行的方法
*/
public void run()
{
try
{
// 該線程進入阻塞狀态5秒
thread.sleep(5000);
for (int i = 0; i < 500; i++)
{
system.out.println(thread.currentthread().getname() + i);
}
}
catch (interruptedexception e)
// 若調用該線程的interrupt方法,會報該異常,真實程式中可以關閉一些資源
e.printstacktrace();
}
}
package cn.xy.thread;
public class sleeptest
public static void main(string[] args)
sleepthread tr = new sleepthread();
thread t = new thread(tr);
t.start();
for (int i = 0; i < 500; i++)
system.out.println(thread.currentthread().getname() + i);
t.interrupt();
若調用該線程的interrupt方法,會報interruptedexception異常,真實程式中可以捕捉該異常并關閉一些資源。
方法三 flag
public class stopthread implements runnable
private boolean flag = true;
while (flag)
// flag變為false後可能會完成該線程的最後一次輸出
system.out.println(thread.currentthread().getname());
public void shutdown()
system.out.println("我被shutdown了!");
flag = false;
public class stoptest
stopthread st = new stopthread();
thread t = new thread(st);
for (int i = 0; i < 10; i++)
system.out.println("主線程結束!");
st.shutdown();
可以很靈活控制線程的結束,shutdown中可以關閉資源。