写了一个简单的多线程。出了点小状况

为了测试项目的udp服务端,写了一个并发的udp客户端。出现了设备编号重复的数据。

  这让我从新学习了,对象的引用问题。

  1、在循环开启线程之前,创建对象,后开始循环创建线程,传入对象。

  2、线程中循环打印对象中不重复的设备编号。

  3、输出结果设备编号重复。

哎,还能犯这样的错误。真是不认真啊。要努力。

这是启动类,循环开启线程

public class TestMain {

    public static void main(String[] args) {
     
   //问题出现在这,对象的创建应该在for循环里面,不然每一线程中CarPojo引用都是引用的这一个对象;
     
   //这样导致数据错乱。一个线程对应一个对象,这样就不会出现错误的状况
CarPojo cp = new CarPojo();      for (int i = 0; i < 10; i++) {          cp.setName("大黄"); cp.setKind("中华田园"); cp.setId(i); new ThreadMe(cp).start(); } } }

下面这个类是线程类

  

public class ThreadMe extends  Thread{

    public CarPojo carPojo;
    public ThreadMe(CarPojo carPojo) {
        this.carPojo= carPojo;
    }

    @Override
    public void run()  {

        try {
            System.out.println(carPojo.getId());
            while (true){
//                Transfer.getStr(carPojo );
                System.out.println(carPojo.toString());
                Thread.sleep(1000L);
            }
        }catch (Exception e){
            e.printStackTrace();
        }


    }
}

猜你喜欢

转载自www.cnblogs.com/weigh/p/9077754.html
今日推荐