synchronized run 方法的問題

2021-07-23 17:08:31 字數 629 閱讀 7190

昨天在看執行緒程式設計的時候,想到了了乙個問題,就是給run方法加上synchronized能實現同步嗎,所以就寫了如下**:

public class mythread extends thread 		}	

public static void main(string args)

}}

執行之後發現根本沒有實現同步,還是幾個執行緒在同時執行,查資料之後發現了問題所在,仔細觀察new執行緒的**:
mythread mt = new mythread();

在main函式裡面它是通過for迴圈實現,實際上它是new出了不同的執行緒物件,也就是說其實每個mythread物件都獲得了各自的物件鎖,都可以執行各自的run方法,解決辦法是不去繼承thread類,通過實現runable介面的辦法,實現**如下:

public class mythread implements runnable 	

}public static void main(string args) throws interruptedexception

}}

這樣就實現了對run方法的同步,因為建立的每個執行緒都是針對mt這同乙個物件。

Qt重寫paintEvent方法遇到的問題

背景 最近在推進先進軟體開發技術大作業的過程中,需要在qt的某個控制項 widget 中繪製乙個2d圖形,該widget位於tabwidget的某乙個tab內,如圖所示。在qt的子控制項widget中利用qpaint類繪製圖形,需要定義乙個新的類,該類繼承自qwidget,並且需要在這個新的類中重寫...

List介面中的remove 方法注意的問題

list中指定元素的刪除 在list中移除掉與str內容相同的元素 錯誤 public static void remove listlist,string str 錯誤執行結果 正確執行結果 錯誤原因 當remove i 之後,list的大小發生了變化,而索引也發生了變化。加入在刪除了第乙個元素之...

jQuery的ajax 方法提交多個陣列問題

function adduser type post success function msg else 在網上查詢資料之後了解到ajax post之前會用因為jquery需要呼叫jquery.param序列化引數,我們來看下jquery原始碼 在ajax 方法中,對json型別的資料進行了 par...