簡體   English   中英

Java多線程,同步概念

[英]Java Multi threading , synchronization concept

我有一個具有三種方法 m1、m2 和 m3 的類。 並且方法 m1,m3 是同步的。

創建了三個線程,比如 t1、t2 和 t3。

這里的問題是如果t1正在訪問m1方法,同時t2可以訪問m3方法嗎? (m1 和 m3 方法都是同步的)。

我沒有代碼。 在我最近的采訪中遇到了這個問題。

如果 m1 和 m3 都是實例方法而不是靜態方法:

這將取決於 t1 和 t2 是否共享您班級的同一對象。 如果它們共享同一個對象,則 t1 和 t2 不能同時調用同步方法。 否則,如果 t1 和 t2 具有不同的類對象副本,則可以同時調用 m1 和 m3,因為它們是 2 個不同的對象。

但是,如果 m1 和 m3 都是靜態的:沒有兩個線程可以同時調用它們。 這是因為,靜態方法在 YourClass.class 對象上同步,該對象由類的所有實例共享。 因此,多個線程不能同時訪問它的同步方法/塊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM