一、操作系統(tǒng)中c的概念
現(xiàn)在的操作系統(tǒng)是多任務(wù)操作系統(tǒng)。多線程是實(shí)現(xiàn)多任務(wù)的一種方式。
進(jìn)程是指一個(gè)內(nèi)存中運(yùn)行的應(yīng)用程序,每個(gè)進(jìn)程都有自己獨(dú)立的一塊內(nèi)存空間,一個(gè)進(jìn)程中可以啟動(dòng)多個(gè)線程。比如在Windows系統(tǒng)中,一個(gè)運(yùn)行的exe就是一個(gè)進(jìn)程。線程是指進(jìn)程中的一個(gè)執(zhí)行流程,一個(gè)進(jìn)程中可以運(yùn)行多個(gè)線程。比如java.exe進(jìn)程中可以運(yùn)行很多線程。線程總是屬于某個(gè)進(jìn)程,進(jìn)程中的多個(gè)線程共享進(jìn)程的內(nèi)存!巴瑫r(shí)”執(zhí)行是人的感覺,在線程之間實(shí)際上輪換執(zhí)行。
二、Java中的線程
在Java中,“線程”指兩件不同的事情:
1、java.lang.Thread類的一個(gè)實(shí)例;
2、線程的執(zhí)行。
使用java.lang.Thread類或者java.lang.Runnable接口編寫代碼來定義、實(shí)例化和啟動(dòng)新線程。一個(gè)Thread類實(shí)例只是一個(gè)對象,像Java中的任何其他對象一樣,具有變量和方法,生死于堆上。Java中,每個(gè)線程都有一個(gè)調(diào)用棧,即使不在程序中創(chuàng)建任何新的線程,線程也在后臺運(yùn)行著。一個(gè)Java應(yīng)用總是從main()方法開始運(yùn)行,mian()方法運(yùn)行在一個(gè)線程內(nèi),它被稱為主線程。一旦創(chuàng)建一個(gè)新的線程,就產(chǎn)生一個(gè)新的調(diào)用棧。線程總體分兩類:用戶線程和守候線程。
當(dāng)所有用戶線程執(zhí)行完畢的時(shí)候,JVM自動(dòng)關(guān)閉。但是守候線程卻不獨(dú)立于JVM,守候線程一般是由操作系統(tǒng)或者用戶自己創(chuàng)建的。
———————————MultiT.java—————————————————
class MultiThread
{
public static void main(String[] args)
{
MyThread mt=new MyThread();
//mt.setDaemon(true);//設(shè)定為后臺線程,main進(jìn)程結(jié)束時(shí),后臺進(jìn)程也跟著結(jié)束。
//mt.setPriority(Thread.MAX_PRIORITY); //設(shè)定線程優(yōu)先級,MAX_PRIORITY為10,MIN_PRIORITY為1,NORM_PRIORITY為5。
//設(shè)定為最高優(yōu)先級后,程序運(yùn)行時(shí),mt線程一直運(yùn)行,強(qiáng)制終止時(shí),main線程才運(yùn)行。
//設(shè)定為最高優(yōu)先級的線程,無論有無yield();,線程總一直運(yùn)行,直到強(qiáng)制終止時(shí),main和mt線程交替運(yùn)行。
mt.start();
int index=0;
while(true) //顯示結(jié)果與教程不同。
{
if(index++==100)
break;
System.out.println("main:"+Thread.currentThread().getName()); //獲取線程名字。
}
}
}
class MyThread extends Thread
{
public void run()
{
while(true)
{
System.out.println(getName());
yield(); //允許當(dāng)前線程停止,轉(zhuǎn)去執(zhí)行其他線程,靜態(tài)方法。
//mt進(jìn)程執(zhí)行時(shí),切換到main進(jìn)程,main進(jìn)程執(zhí)行一段時(shí)間后。
//切換進(jìn)程到mt,mt執(zhí)行完獲取名字后,返回到main進(jìn)程。
}
}
}
//一個(gè)長時(shí)間處于等待狀態(tài)的線程也有可能被線程調(diào)度器調(diào)度,從而運(yùn)行。
//打破高優(yōu)先級線程始終獲有運(yùn)行時(shí)間的狀態(tài)。
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |