在java多线程小程序中,所有线程都在同一对象上绘制

在java多线程小程序中,所有线程都在同一对象上绘制,java,string,multithreading,applet,paint,Java,String,Multithreading,Applet,Paint,这是我第一次编写java小程序;我有我的多线程程序,我必须创建一个小程序,显示程序的操作;在这一刻,我尝试创建一个非常基本的applet,它“简单地”打印每个线程的名称 我的问题是,所有线程都在同一个对象上绘制并覆盖该对象,我希望每个线程分别编写自己的名称(此时我只能看到最后一个线程的名称) 我试图创建另一个图形对象,但没有工作(我认为这不是正确的方法) 这是我的小程序的结构:我创建了一个作为接口的监听器和一个扩展小程序并实现监听器的响应器,在这里我有init()、paint(图g)和监听器接口

这是我第一次编写java小程序;我有我的多线程程序,我必须创建一个小程序,显示程序的操作;在这一刻,我尝试创建一个非常基本的applet,它“简单地”打印每个线程的名称

我的问题是,所有线程都在同一个对象上绘制并覆盖该对象,我希望每个线程分别编写自己的名称(此时我只能看到最后一个线程的名称)

我试图创建另一个图形对象,但没有工作(我认为这不是正确的方法)

这是我的小程序的结构:我创建了一个作为接口的监听器和一个扩展小程序并实现监听器的响应器,在这里我有init()、paint(图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();
    }
}
import java.applet.applet;
导入java.awt.Graphics;
导入java.awt.Color;
公共类响应程序扩展小程序实现侦听器{
公共void init(){
//一些初始化
对于(inti=0;i你的问题就在这里

 for(int i=0; i<10; i++){
    TH created = new TH(this);  //this=receiver
    created.start();
}

for(int i=0;ithanks,但以这种方式不起作用。所有线程都调用测试方法,但只绘制了一个字符串,并且具有字符串toPrint的初始化值。我不明白为什么。是要在一个applet中绘制所有线程的名称,还是要为每个线程绘制applet?我想要一个applet,每个线程绘制一个自己的对象(与其他线程不同),在本例中,他们的名称将synchronized添加到您的测试方法未解决:(synchronized确保一次只有一个线程可以写入字符串,但所有线程都可以写入同一个字符串,这里的问题是如何告诉java为每个线程创建一个对象,以允许每个线程写入自己的对象(本例中为字符串)并且不是都在同一个对象上。也许可以创建一个图形对象,每个线程都可以在绘制功能上通过它?1)为什么要编写小程序?如果是因为老师指定了它,请参考他们。2)要更快地获得更好的帮助,请发布(最小完整的可验证示例)或(简短、自包含、正确的示例).我的老师想让applet展示我的多线程java程序是如何工作的。我试图解决问题,如果我解决不了,我会发布代码。谢谢,我不是在开玩笑。请让老师看那篇文章。
 for(int i=0; i<10; i++){
    TH created = new TH(new Responder());
    created.start();
}