多執行緒學習初步(轉)
多執行緒學習初步(轉)[@more@]import java.io.*;
//多執行緒程式設計
public class MultiThread
{
public static void main(String args[])
{
System.out.println("我是主執行緒!");
//下面建立執行緒例項thread1
ThreadUseExtends thread1=new ThreadUseExtends();
//建立thread2時以實現了Runnable介面的THhreadUseRunnable類例項為引數
Thread thread2=new Thread(new ThreadUseRunnable(),"SecondThread");
thread1.start();//啟動執行緒thread1使之處於就緒狀態
//thread1.setPriority(6);//設定thread1的優先順序為6
//優先順序將決定cpu空出時,處於就緒狀態的執行緒誰先佔領cpu開始執行
//優先順序範圍1到10,MIN_PRIORITY,MAX_PRIORITY,NORM_PAIORITY
//新執行緒繼承建立她的父執行緒優先順序,父執行緒通常有普通優先順序即5NORM_PRIORITY
System.out.println("主執行緒將掛起7秒!");
try
{
Thread.sleep(7000);//主執行緒掛起7秒
}
catch (InterruptedException e)
{
return;
}
System.out.println("又回到了主執行緒!");
if(thread1.isAlive())
{
thread1.stop();//如果thread1還存在則殺掉他
System.out.println("thread1休眠過長,主執行緒殺掉了thread1!");
}
else
System.out.println("主執行緒沒發現thread1,thread1已醒順序執行結束了!");
thread2.start();//啟動thread2
System.out.println("主執行緒又將掛起7秒!");
try
{
Thread.sleep(7000);//主執行緒掛起7秒
}
catch (InterruptedException e)
{
return;
}
System.out.println("又回到了主執行緒!");
if(thread2.isAlive())
{
thread2.stop();//如果thread2還存在則殺掉他
System.out.println("thread2休眠過長,主執行緒殺掉了thread2!");
}
else
System.out.println("主執行緒沒發現thread2,thread2已醒順序執行結束了!");
System.out.println("程式結束按任意鍵繼續!");
try
{
System.in.read();
}
catch (IOException e)
{
System.out.println(e.toString());
}
}//main
}//MultiThread
class ThreadUseExtends extends Thread
//透過繼承Thread類,並實現它的抽象方法run()
//適當時候建立這一Thread子類的例項來實現多執行緒機制
//一個執行緒啟動後(也即進入就緒狀態)一旦獲得CPU將自動呼叫它的run()方法
{
ThreadUseExtends(){}//建構函式
public void run()
{
System.out.println("我是Thread子類的執行緒例項!");
System.out.println("我將掛起10秒!");
System.out.println("回到主執行緒,請稍等,剛才主執行緒掛起可能還沒醒過來!");
try
{
sleep(10000);//掛起5秒
}
catch (InterruptedException e)
{
return;
}
//如果該run()方法順序執行完了,執行緒將自動結束,而不會被主執行緒殺掉
//但如果休眠時間過長,則執行緒還存活,可能被stop()殺掉
}
}
class ThreadUseRunnable implements Runnable
//透過實現Runnable介面中的run()方法,再以這個實現了run()方法的類
//為引數建立Thread的執行緒例項
{
//Thread thread2=new Thread(this);
//以這個實現了Runnable介面中run()方法的類為引數建立Thread類的執行緒例項
ThreadUseRunnable(){}//建構函式
public void run()
{
System.out.println("我是Thread類的執行緒例項並以實現了Runnable介面的類為引數!");
System.out.println("我將掛起1秒!");
System.out.println("回到主執行緒,請稍等,剛才主執行緒掛起可能還沒醒過來!");
try
{
Thread.sleep(1000);//掛起5秒
}
catch (InterruptedException e)
{
return;
}
//如果該run()方法順序執行完了,執行緒將自動結束,而不會被主執行緒殺掉
//但如果休眠時間過長,則執行緒還存活,可能被stop()殺掉
}
}
//該程式可做的修改如改休眠時間或優先順序setPriority()
//多執行緒程式設計
public class MultiThread
{
public static void main(String args[])
{
System.out.println("我是主執行緒!");
//下面建立執行緒例項thread1
ThreadUseExtends thread1=new ThreadUseExtends();
//建立thread2時以實現了Runnable介面的THhreadUseRunnable類例項為引數
Thread thread2=new Thread(new ThreadUseRunnable(),"SecondThread");
thread1.start();//啟動執行緒thread1使之處於就緒狀態
//thread1.setPriority(6);//設定thread1的優先順序為6
//優先順序將決定cpu空出時,處於就緒狀態的執行緒誰先佔領cpu開始執行
//優先順序範圍1到10,MIN_PRIORITY,MAX_PRIORITY,NORM_PAIORITY
//新執行緒繼承建立她的父執行緒優先順序,父執行緒通常有普通優先順序即5NORM_PRIORITY
System.out.println("主執行緒將掛起7秒!");
try
{
Thread.sleep(7000);//主執行緒掛起7秒
}
catch (InterruptedException e)
{
return;
}
System.out.println("又回到了主執行緒!");
if(thread1.isAlive())
{
thread1.stop();//如果thread1還存在則殺掉他
System.out.println("thread1休眠過長,主執行緒殺掉了thread1!");
}
else
System.out.println("主執行緒沒發現thread1,thread1已醒順序執行結束了!");
thread2.start();//啟動thread2
System.out.println("主執行緒又將掛起7秒!");
try
{
Thread.sleep(7000);//主執行緒掛起7秒
}
catch (InterruptedException e)
{
return;
}
System.out.println("又回到了主執行緒!");
if(thread2.isAlive())
{
thread2.stop();//如果thread2還存在則殺掉他
System.out.println("thread2休眠過長,主執行緒殺掉了thread2!");
}
else
System.out.println("主執行緒沒發現thread2,thread2已醒順序執行結束了!");
System.out.println("程式結束按任意鍵繼續!");
try
{
System.in.read();
}
catch (IOException e)
{
System.out.println(e.toString());
}
}//main
}//MultiThread
class ThreadUseExtends extends Thread
//透過繼承Thread類,並實現它的抽象方法run()
//適當時候建立這一Thread子類的例項來實現多執行緒機制
//一個執行緒啟動後(也即進入就緒狀態)一旦獲得CPU將自動呼叫它的run()方法
{
ThreadUseExtends(){}//建構函式
public void run()
{
System.out.println("我是Thread子類的執行緒例項!");
System.out.println("我將掛起10秒!");
System.out.println("回到主執行緒,請稍等,剛才主執行緒掛起可能還沒醒過來!");
try
{
sleep(10000);//掛起5秒
}
catch (InterruptedException e)
{
return;
}
//如果該run()方法順序執行完了,執行緒將自動結束,而不會被主執行緒殺掉
//但如果休眠時間過長,則執行緒還存活,可能被stop()殺掉
}
}
class ThreadUseRunnable implements Runnable
//透過實現Runnable介面中的run()方法,再以這個實現了run()方法的類
//為引數建立Thread的執行緒例項
{
//Thread thread2=new Thread(this);
//以這個實現了Runnable介面中run()方法的類為引數建立Thread類的執行緒例項
ThreadUseRunnable(){}//建構函式
public void run()
{
System.out.println("我是Thread類的執行緒例項並以實現了Runnable介面的類為引數!");
System.out.println("我將掛起1秒!");
System.out.println("回到主執行緒,請稍等,剛才主執行緒掛起可能還沒醒過來!");
try
{
Thread.sleep(1000);//掛起5秒
}
catch (InterruptedException e)
{
return;
}
//如果該run()方法順序執行完了,執行緒將自動結束,而不會被主執行緒殺掉
//但如果休眠時間過長,則執行緒還存活,可能被stop()殺掉
}
}
//該程式可做的修改如改休眠時間或優先順序setPriority()
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-958348/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 多執行緒學習筆記 (轉)執行緒筆記
- 多執行緒學習一(多執行緒基礎)執行緒
- Java多執行緒學習——執行緒通訊Java執行緒
- Java多執行緒學習(2)執行緒控制Java執行緒
- 多執行緒學習(二)執行緒
- Java多執行緒學習Java執行緒
- 多執行緒學習一執行緒
- iOS 多執行緒-學習iOS執行緒
- Java多執行緒學習筆記(二) (轉)Java執行緒筆記
- Java多執行緒學習(一)Java多執行緒入門Java執行緒
- #大學#Java多執行緒學習02(執行緒同步)Java執行緒
- Linux socket程式設計學習初步(5)--伺服器多執行緒Linux程式設計伺服器執行緒
- Java 多執行緒NIO學習Java執行緒
- C++多執行緒學習C++執行緒
- Java多執行緒(學習篇)Java執行緒
- Linux多執行緒學習Linux執行緒
- 多執行緒學習筆記執行緒筆記
- C#多執行緒學習(四) 多執行緒的自動管理(執行緒池)C#執行緒
- C# 多執行緒學習(4) :多執行緒的自動管理(執行緒池)C#執行緒
- Java多執行緒學習(3)執行緒同步與執行緒通訊Java執行緒
- java基礎-多執行緒初步瞭解Java執行緒
- 對webWorker多執行緒效能的初步探索Web執行緒
- iOS多執行緒的初步研究(三)-- NSRunLoopiOS執行緒OOP
- C#多執行緒學習(一) 多執行緒的相關概念C#執行緒
- C# 多執行緒學習(1) :多執行緒的相關概念C#執行緒
- Java 多執行緒學習筆記Java執行緒筆記
- 多執行緒學習-Disruptor佇列執行緒佇列
- java學習筆記--多執行緒Java筆記執行緒
- java多執行緒學習小案例Java執行緒
- Java多執行緒學習(八)執行緒池與Executor 框架Java執行緒框架
- Java 多執行緒學習筆記(三)-守護執行緒Java執行緒筆記
- 多執行緒基礎必要知識點!看了學習多執行緒事半功倍執行緒
- Java多執行緒學習(1)建立執行緒與執行緒的生命週期Java執行緒
- 多執行緒Demo學習(執行緒的同步,簡單的執行緒通訊)執行緒
- python 多程式和多執行緒學習Python執行緒
- iOS多執行緒的初步研究(九)-- dispatch源iOS執行緒
- 多執行緒複習執行緒
- Python學習筆記 - 多執行緒Python筆記執行緒