[英]in java multithread applet all threads draw on same object
這是我第一次編寫Java小程序。 我有我的多線程程序,並且必須創建一個小程序來顯示程序的操作。 在這一刻,我嘗試創建一個非常簡單的小程序,“簡單地”打印每個線程的名稱。
我的問題是所有線程都在同一個對象上繪制並覆蓋此對象,我希望每個線程分別編寫自己的名稱(此刻我只能看到最后一個線程的名稱)。
我試圖創建另一個圖形對象,但是不起作用(我認為不是正確的方法)。
這是我的applet的結構:我創建了一個偵聽器,該接口是一個接口,一個響應器擴展了Applet並實現了偵聽器,在這里,我有init(),paint(Graphic g)和偵聽器接口的功能實現,結構是:
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Color;
public class Responder extends Applet implements Listener {
public void init(){
//some initialization
for(int i=0; i<10; i++){
TH created = new TH(this); //this=receiver
created.start();
}
}
String toPrint;
int pos=0;
public void paint(Graphics g){
g.drawString(toPrint, 20, pos);
}
@Override
public void test(String s){
toPrint=s;
pos+=10;
repaint();
}
}
每個線程都調用“測試”功能
結果是在applet中,我只有一個帶有最后一個線程名稱的字符串。 我在網上搜索過,但找不到清晰的示例。
有人可以建議我正確的方法嗎?
謝謝(對不起,如果有英語錯誤)
編輯: 圖像要清晰
你的問題在這里
for(int i=0; i<10; i++){
TH created = new TH(this); //this=receiver
created.start();
}
您創建了10個不同的線程,並在構造函數中傳遞了相同的applet對象。 您需要一些這樣的東西:
for(int i=0; i<10; i++){
TH created = new TH(new Responder());
created.start();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.