日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

多线程之间实现同步

發(fā)布時(shí)間:2025/3/15 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 多线程之间实现同步 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

為什么80%的碼農(nóng)都做不了架構(gòu)師?>>> ??

目標(biāo):

? ? 1.理解線程安全?

????2.synchronized用法

????3.死鎖

一、什么是線程安全問題?

? ??? ? 當(dāng)多個(gè)線程同時(shí)共享 ,同一個(gè)全局變量或靜態(tài)變量,在做寫的操作時(shí),可能會(huì)發(fā)生數(shù)據(jù)沖突問題。

? 這就是線程安全問題,但是當(dāng)做讀的操作是不會(huì)發(fā)生數(shù)據(jù)沖突問題的。

例子:

????? ? 比如搶火車票。

1號(hào)窗口,2號(hào)窗口,同時(shí)出售第一張火車票,這樣就是現(xiàn)成安全問題?

結(jié)論:當(dāng)多個(gè)線程同時(shí)共享同一個(gè)全局變量或者靜態(tài)變量,在做寫的操作時(shí)可能會(huì)發(fā)生數(shù)據(jù)沖突,造成線程安全問題。

那么如何解決線程安全問題呢?

?答:使用多線程之間同步或使用鎖(lock)。

什么是線程之間的同步呢?

既然能解決線程安全問題?多個(gè)線程共享同一個(gè)全局變量時(shí)可能發(fā)生數(shù)據(jù)沖突,那么是不是 同步就不能讓他們發(fā)生數(shù)據(jù)沖突呢?也就是 當(dāng)這個(gè)線程在使用這個(gè)全局變量的時(shí)候其他線程不能對這個(gè)全局變量進(jìn)行操作,必須等他操作完成之后才能進(jìn)行操作。

答:多個(gè)線程共享同一全局變量的時(shí)候,不會(huì)受到其他線程的干擾。

什么是鎖?

答:鎖顧名思義就是 給你這個(gè)東西上一個(gè)鎖,其他人進(jìn)不來。

代碼演示:

①同步代碼塊

? ? 什么是同步代碼塊?

? ? 答:就是講可能發(fā)生線程安全的代碼,給包括起來。

????synchronized(同一個(gè)數(shù)據(jù)){

?????????可能會(huì)發(fā)生線程沖突問題

????????}

? ?

這里就不會(huì)出現(xiàn) ?上面兩個(gè)線程搶同一張票的情況!

②同步函數(shù)

? ? 什么是同步函數(shù)?

? ? 答:方法被synchronized 修飾的方法,叫同步方法,

????

? ? 同步我們都要定義一個(gè)鎖對象,但是這個(gè)同步函數(shù)的鎖對象是誰呢?

? ? 答:this

? ? 證明方式:一個(gè)用明鎖,一個(gè)不用,看是否出現(xiàn)數(shù)據(jù)沖突問題。

????

③靜態(tài)同步函數(shù)

????? ? 什么是靜態(tài)同步函數(shù)?

????? ? 答:就是在同步函數(shù)前加一個(gè) static 關(guān)鍵字,

? ??????

????? ?那么靜態(tài)同步函數(shù)又是用的什么對象鎖呢?

????? ? 注意這里靜態(tài)方法都會(huì)被先加載。所以這里的鎖對象是 該函數(shù)的字節(jié)碼對象。

????? ? 可以通過getClass ? 或者 類名.class

????

總結(jié):

? ? synchronized 修飾方法 是用的this 鎖

? ? synchronized 修飾靜態(tài)方法 是用的 字節(jié)碼對象。

二、多線程死鎖

? ? 什么是死鎖?

? ? 兩個(gè)線程各抱著自己的鎖,等著對方釋放鎖。這就是死鎖。一直等下去。。。

? ? 什么原因造成的?

? ? 同步中嵌套同步!

????

面試題總結(jié):

????? ? 1.什么是線程安全問題?如何解決?

?????????答:當(dāng)多個(gè)線程共享同一個(gè)全局變量或靜態(tài)變量,可能會(huì)造成數(shù)據(jù)沖突。使用同步或者鎖。

????? ? 2.如何判斷會(huì)造成線程安全問題。

????????? ? 答:如果這個(gè)線程有寫的操作,就可能會(huì)發(fā)生線程安全問題,如果是讀的操作則不會(huì)發(fā)生線程安全問題

????? ? 3.什么是死鎖

????????? ? 答:同步中嵌套同步

?

轉(zhuǎn)載于:https://my.oschina.net/960823/blog/1518967

總結(jié)

以上是生活随笔為你收集整理的多线程之间实现同步的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。