執行緒間通訊 執行緒池 Lambda表示式

2021-09-18 06:38:55 字數 2548 閱讀 9446

注意注意注意!lambda是1.8的新特性,之前的版本用不了的。lambda主要用於簡化**,對於提高效率,減少記憶體等沒有作用

最典型的例題就是生產者與消費者模型:

1)定義乙個生產手機車間的類phonefactory

2)定義乙個生產線程任務的類producetask 並實現執行緒任務介面runnable,同時實現介面中的run函式;

3)定義乙個消費執行緒任務的類consumetask 並實現執行緒任務介面runnable,同時實現介面中的run函式;

4)定義測試類

public

class

phonefactory

catch

(interruptedexception e)}if

(i%2==0

)else

this

.hasphone=

true

;//有手機了,修改標記

this

.notify()

;//喚醒

i++;}

//消費

public

synchronized

void

get(

)catch

(interruptedexception e)

}//public void get()

}

public

class

producetask

implements

runnable

@override

public

void

run(

)catch

(interruptedexception e)

pf.produce()

;}}}

public

class

consumetask

implements

runnable

@override

public

void

run(

)catch

(interruptedexception e)

pf.get();

}}}

public

class

test

}

執行緒間通訊的方式:

a:wait()讓執行緒等待;

b:notify()喚醒某個等待中的執行緒;

c:notifyall()喚醒所有等待的執行緒;

注意:為什麼這幾個方法都在object類中定義呢?

執行緒的通訊是由鎖物件控制的,鎖物件可以是任意的。任意物件都可以呼叫的方法必須在object類中

合理利用執行緒池能夠帶來三個好處:

降低資源消耗。

提高響應速度。

提高執行緒的可管理性

執行緒池的使用就用上面那個test類來舉例說明一下吧!

public

class

test

}

1.lambda(無參無返回)

//導演介面類

public

inte***ce

director

public

class

test09invokedirect

private

static

void

invokedirect

(director director)

}

2.lambda(有參有返回)

public

inte***ce

calculator

public

class

test

private

static

void

invokecalculator

(int a,

int b, calculator c)

}

3.lambda(省略格式)

public

class

student

public

class

test

; arrays.

sort

(arr,

(s1,s2)

->s2.

getgrade()

-s1.

getgrade()

);system.out.

println

(arrays.

tostring

(arr));

}}

執行緒間通訊 執行緒優先順序 Thread 執行緒池

1.執行緒間通訊 多個執行緒 操作同乙個資源 但是操作的動作不同 例如 銀行卡 存錢 取錢 執行緒的等待喚醒機制 wait 等待 讓執行緒進入凍結狀態 放棄了執行權 等待的執行緒會放到等待池中 notify 喚醒 會喚醒等待池中的執行緒 喚醒的是第乙個等待的執行緒 notifyall 喚醒等待的所有...

執行緒間通訊

執行緒間通訊 多個執行緒在操作統一資源,但各個執行緒操作的動作不同。資源 class res class input implements runnable public void run else x x 1 2 class output implements runnable public vo...

執行緒間通訊

執行緒間的通訊 在乙個多執行緒的應用程式中,所有執行緒共享程序資源,協同工作。所以,執行緒之間的通訊是編寫多執行緒 應用的必不可少的環節。執行緒之間的通訊包括互斥 同步等,它是多 執行緒設計中最難控制的部分,也是關鍵部分。執行緒間的互斥 1 臨界區 在乙個多執行緒 的應用程式中,可能存在這樣的危險 ...