簡體   English   中英

在Java中同時訪問同步方法時會發生什么?

[英]What happens when a synchronized method is accessed at the same time in java?

好的,所以我正在嘗試構建一個腳本,該腳本將在x台機器上自動執行一些測試...,我希望它們能夠彼此對話。 我對線程有點陌生,並且我已經對使用同步方法進行了一些研究。 我的問題是,當兩個單獨的線程嘗試訪問它時會發生什么? 我知道它會鎖定並為呼叫者提供獨占訪問權限,但是隨后直接處理該行中的下一個呼叫嗎? 我可以讓多個線程同時調用同一個函數,並且我想准備好處理它。 我還發現了以下信息:

調用方法時,JVM在執行線程中為調用創建堆棧框架。 該框架包含方法中聲明的所有局部變量。 對於任何不訪問字段的靜態或靜態方法,每次執行完全在每個線程上進行。 如果該方法在計算中使用參數,則這些參數也位於堆棧框架中,並且多個調用不會相互干擾。

這是在另一篇文章中說的,它不是指同步方法。 抱歉,如果我不清楚自己的意思,但是我只是想確保從線程中調用某個函數是什么,將其視為堆棧。

如果您有一個同步的方法,並且x個線程嘗試通過魔術來同時訪問它,那么只有一個線程可以訪問,而其他線程只是等待(阻止)直到有訪問權限的線程完成。 如果同步方法中允許的線程從不退出該塊,則您將具有所謂的死鎖。

暫無
暫無

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

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