執行緒與程序

2021-08-20 10:02:47 字數 3165 閱讀 8475

執行緒是cpu排程的最小單位,程序是資源分配的最小單位。程序是執行緒的容器,真正完成**執行的是執行緒,而程序則作為執行緒的執行環境。

實現多執行緒

·繼承thread類;

·實現runnable介面(callable介面,知道就行);

執行緒啟動都是thread的start啟動

繼承thread類乙個小例項

package cn.xst.textdemo;

class

mythread

extends

thread

@override

public

void run()

}}public

class

xianchengthread

}

thread有單繼承侷限,所以最好就是用runnable介面

在介面裡面任何的方法都是public定義的許可權,不存在預設的許可權只需要讓乙個類實現runnable介面就可以,並且需要覆寫run()方法

實現runnable介面

package cn.xst.textdemo;

class

mythread

implements

runnable

@override

public

void run()

}}public

class

xianchengthread

}

結構上是一致的,如果繼承的是thread類,那麼可以直接繼承start方法,但是如果實現的是runnable介面,沒有start方法

要想進行執行緒名稱的的操作,可以使用thread類的方法 以下都是thread的方法

package cn.xst.textdemo;

class

mymingm

implements

runnable

}public

class

xianchengmm

}

原來主方法就是乙個執行緒(main執行緒),那麼所有在主方法上建立的執行緒實際上都可以將其表示為子執行緒

每乙個jvm程序啟動的時候至少啟動幾個執行緒

所謂的執行緒休眠指的是讓執行緒的執行速度稍微變慢一點,休眠的方法: 也是屬於thread

·public static void sleep(long millis)這是毫秒throws interruptedexception 1000毫秒==1秒

package cn.xst.textdemo;

class

xs******ments

runnable catch (interruptedexception e)

system.out.println(thread.currentthread().getname()+", x="+x);}}

}public

class

xianchengxm

}

所謂的優先順序指的是越高的優先順序,越有可能先執行

發現設定和取得優先順序都是使用了int資料型別,對於此內容有三種取值;

package cn.xst.textdemo;

class

yxjimplements

runnable catch (interruptedexception e)

system.out.println(thread.currentthread().getname()+", x="+x);}}

}public

class

xianchengynj

}

主線程屬於中等優先順序

實際上所謂的同步指的是就是多個執行緒訪問同一資源時所需要考慮到的問題

package cn.xst.textdemo;

class

tbimplements

runnable catch (interruptedexception e)

if(this.ticket>0)}}

}public

class

xianchengtb

//這是三個執行緒在搶占賣票 每個人都在

}

同步問題在於

在搶占的時候 先判斷是否有剩餘票

再進行 休眠延遲

再修改剩餘票數

因此解決同步問題在於把以上的三個步驟都合起來叫做同步

要想實現執行緒的同步可以使用synchronized關鍵字

同步**塊

package cn.xst.textdemoa;

class

tbimplements

runnable catch (interruptedexception e)

system.out.println(thread.currentthread().getname()+"賣票="+this.ticket--);}}

}}

}public

class

xianchengtb

}

同步方法

package cn.xst.textdemoa;

class

tbimplements

runnable

}public synchronized void sale() catch (interruptedexception e)

system.out.println(thread.currentthread().getname()+"賣票="+this.ticket--);}}

}public

class

xianchengtb

}

請解釋多個執行緒訪問同一資源時需要考慮到哪些情況?有可能帶來那些問題

程序與執行緒

程序 process 管理單元,管理分配應用程式的資料,的記憶體空間.執行緒 thread 執行單元,執行緒負責執行乙個預先編排好的 段,執行 棧是基於執行緒的.乙個應用程式啟動的時候,程序自動建立,並且會預設建立主線程,主線程負責執行main 方法.thread t new thread new ...

程序與執行緒

程序 是擁有資源的實體,包括 1。乙個程序有乙個虛擬位址空間,不同程序位於不同的 虛擬位址空間中。程序之間若要通訊,必須通過作業系統 的功能呼叫 ipc 2。程序擁有其他資源,例如開啟的檔案和i o裝置。程序結束時,作業系統會自動釋放該程序擁有的所有資源。例如,如果 open乙個檔案而不close它...

程序與執行緒

程序包括 1 私有的虛位址空間 2 可執行程式 與資料 3 開啟系統資源列表控制代碼 4 安全訪問標誌 5 程序id 6 至少有乙個執行執行緒 執行緒包括 1 一組cpu暫存器狀態 2 兩個堆疊 系統態與使用者態 3 tls 執行緒區域性儲存區 4 執行緒id 5 安全特性 因此程序是不活潑的,它從...