執行緒同步與死鎖
課程大綱
一、 多執行緒共享資料
1、在多執行緒的操作中,多個執行緒有可能同時處理同乙個資源,這就是多執行緒中的共享資料。
二、 執行緒同步
1、 解決資料共享問題,必須使用同步,所謂同步就是指多個執行緒在同乙個時刻只能有乙個執行緒執行指定**,其他執行緒要等到該執行緒執行結束之後才能繼續執行。
2、 執行緒同步有兩種方法
(1)、同步**塊synchronized(要同步的物件)
(2)、同步方法
public synchronize void method()
三、 同步準則
1、 當編寫synchronize塊時,有幾個簡單的準則可以遵循,這些準則在避免死鎖和效能危險的風險方面大有幫助:
2、 (1)、使**塊簡短,把不隨執行緒變化的預處理和後處理移出synchronize塊。
3、 (2)、不要阻塞,如:inputstream.read()
4、 (3)、在持有鎖的時候,不要對其他物件呼叫方法。
四、 執行緒死鎖
1、過多的同步有可能出現死鎖,死鎖的操作一般是在程式執行的時候才有可能出現。
**如下:
package us.google;
/**
* 多執行緒共享資料的安全問題。使用同步解決
* 1、同步**塊
* 2、同步方法
* 同步**會代來效能降低的問題,提高資料的安全性。
* @author chongrubujing
* */
public class threaddemo }
class mythread implements runnable
catch (interruptedexception e)
system.out.println(thread.currentthread().getname()+"吃飯了");*/
//呼叫method方法
method();
}//方法二:同步方法,同步的是當前物件(this)
public synchronized void method()
catch (interruptedexception e)
system.out.println(thread.currentthread().getname()+"吃飯了");
}}死鎖:是有機率的
package us.google;
/**
* 執行緒死鎖
* @author chongrubujing
* */
public class deadthreaddemo }
//顧客
class customer
public synchronized void doservice() }
//服務員
class waiter
public synchronized void doservice() }
//死鎖執行緒
class deadthread implements runnable
@override
public void run()
執行緒 同步與死鎖
一,本章目標 了解執行緒同步的作用 了解同步 塊及同步方法的作用 了解死鎖的產生 二,具體內容 說明 在多執行緒的開發中,同步與死鎖的概念是非常重要的,一定要掌握以下幾點 那裡需要絨布 如何實現同步,了解即可 實現同步之後有什麼 問題引出 以賣火車票為例,如果想買火車票,可以去火車站購買或者去各個售...
執行緒死鎖與同步
同步死鎖是指兩個或兩個以上的程序在執行過程中,由於競爭資源或者由於彼此通訊而造成的一種阻塞的現象,若無外力作用,它們都將無法推進下去。此時稱系統處於死鎖狀態或系統產生了死鎖,這些永遠在互相等待的程序稱為死鎖程序。當系統中供多個程序共享的資源如印表機,其數目不足以滿足各個程序的需要時,會引起各個程序對...
多執行緒 同步與死鎖
多個操作在同一時間內 只能有乙個執行緒執行,其他執行緒要等此執行緒完成之後才能繼續執行。要解決資源共享的同步操作問題,可以使用同步 塊和同步方法完成。1.1 同步 塊 塊分四種 1 普通 塊 是直接定義在方法之中的。2 構造塊 是定義在類中的,優先於構造方法執行,可以重複呼叫 3 靜態塊 是使用st...