为了测试项目的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(); } } }