簡體   English   中英

在Java多線程小程序中,所有線程都在同一對象上繪制

[英]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.

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