與人有生老病死一樣
// 開始線程
public void start( );
public void run( );
// 掛起和喚醒線程
public void resume( ); // 不建議使用
public void suspend( ); // 不建議使用
public static void sleep(long millis);
public static void sleep(long millis
// 終止線程
public void stop( ); // 不建議使用
public void interrupt( );
// 得到線程狀態
public boolean isAlive( );
public boolean isInterrupted( );
public static boolean interrupted( );
// join方法
public void join( ) throws InterruptedException;
一
線程在建立後並不馬上執行run方法中的代碼
當調用start方法後
package chapter
public class LifeCycle extends Thread
{
public void run()
{
int n =
while ((++n) <
}
public static void main(String[] args) throws Exception
{
LifeCycle thread
System
thread
System
thread
System
System
}
}
要注意一下
上面代碼的運行結果
isAlive: false
isAlive: true
thread
isAlive: false
二
一但線程開始執行run方法
雖然suspend和resume可以很方便地使線程掛起和喚醒
package chapter
public class MyThread extends Thread
{
class SleepThread extends Thread
{
public void run()
{
try
{
sleep(
}
catch (Exception e)
{
}
}
}
public void run()
{
while (true)
System
}
public static void main(String[] args) throws Exception
{
MyThread thread = new MyThread();
SleepThread sleepThread = thread
sleepThread
sleepThread
thread
boolean flag = false;
while (true)
{
sleep(
flag = !flag;
if (flag)
thread
else
thread
}
}
}
從表面上看
在使用sleep方法時有兩點需要注意
public static void sleep(long millis) throws InterruptedException
public static void sleep(long millis
三
有三種方法可以使終止線程
當run方法執行完後
package chapter
public class ThreadFlag extends Thread
{
public volatile boolean exit = false;
public void run()
{
while (!exit);
}
public static void main(String[] args) throws Exception
{
ThreadFlag thread = new ThreadFlag();
thread
sleep(
thread
thread
System
}
}
在上面代碼中定義了一個退出標志exit
使用stop方法可以強行終止正在運行或掛起的線程
thread
雖然使用上面的代碼可以終止線程
使用interrupt方法來終端線程可分為兩種情況
(
(
在第一種情況下使用interrupt方法
package chapter
public class ThreadInterrupt extends Thread
{
public void run()
{
try
{
sleep(
}
catch (InterruptedException e)
{
System
}
}
public static void main(String[] args) throws Exception
{
Thread thread = new ThreadInterrupt();
thread
System
System
thread
thread
System
}
}
上面代碼的運行結果如下
在
sleep interrupted
線程已經退出!
在調用interrupt方法後
注意
From:http://tw.wingwit.com/Article/program/Java/gj/201311/11154.html