写了一个简单的多线程。出了点小状况
为了测试项目的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();
}
}
}

浙公网安备 33010602011771号