我有一個GUI(其EDT線程)和另一個線程被稱爲「記錄」由GUI的事件監聽創建如果按下按鈕:EDT和其他線程Java之間的傳遞信息與控制器
if(actionEvent.getSource().equals(ui.record)) {
if(recorderThread == null) {
recorder = new Recorder();
recorderThread = new Thread(recorder);
recorderThread.start();
}
}
在同一個事件監聽器,我也實現了一個mouseListener。
public void mouseReleased(MouseEvent mEvent) {
int x, y;
x = mEvent.getXOnScreen();
y = mEvent.getYOnScreen();
}
我想在點擊鼠標時將這些X和Y變量傳遞給記錄器線程中的記錄器對象。我想我可以用volatile變量來解決一個解決方案,但是我在某處讀到處理程序可以用來在兩個線程之間傳遞信息或調用方法,並且有興趣瞭解它。我發現this previous post面臨類似的問題,我的。
然而,解決方案的帖子,讓我很困惑。我認爲這個人將線程對象傳遞給處理程序,那麼任何線程都可以調用該處理程序中的所有對象?例如:
handler(someObj);
然後在另一個線程
handler.getSomeObj().methodInObj();
但我不能完全肯定,如果這是處理程序是如何工作的。另外,他們似乎也在處理Swing的後臺線程,而不是用戶創建的單獨線程(如果這是相同的概念,請提前致歉)。
最後,該解決方案似乎已經調用了Java庫中內置的Handler類,而我想編寫自己的處理程序類,以便我可以更好地瞭解線程是如何通信的(因爲我是一位非常新手的youtube教程程序員) 。如果任何人都可以幫助我,它將不勝感激。提前致謝!
究竟什麼是錄音機做背景的GUI運行時?它正在進行什麼活動? –
而且,你永遠*線程之間發送*而是* *的對象,一個細微但非常重要的區別之間的信息。 –
感謝您的澄清!記錄器只需創建一個名爲「Point」的對象列表,存儲鼠標點擊的X和Y位置,以供自動刷新器使用。 – Jeff