1.多线程理解:以批量文件为例,当程序运行到多线程代码的某一段时,断点不往下执行而是,执行批量文件下一条记录的同一段代码。之前遇到过一个问题:多线程代码的某一个地方查询数据库是否存在账户,不存在则新增。因为多线程,检查完账户是否存在并没有往下执行,而是执行同样的检查账户代码,导致新建了多个账户。
2.java要实现多线程需要继承Thread类,然后重写run方法。run方法里面就是多线程要执行的代码。
多线程的调用不是直接调用run方法,直接调用run是普通的方法调用,不会以多线程的方式运行。
需要多线程的方式就要调用Thread类的start方法。
示例代码:
public class Thread1 extends Thread {
@Override
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println(i);
}
}
}
public class TestThread1 {
public static void main(String[] args) {
//创建线程对象
Thread1 thread = new Thread1();
Thread1 thread2 = new Thread1();
//启动线程
// thread.run();
// thread.run();
// run():仅仅是封装被线程执行的代码,直接调用是普通方法
// start():首先启动了线程,然后再由jvm去调用该线程的run()方法。
// thread.run();
// thread.start();
// IllegalThreadStateException:非法的线程状态异常
// 为什么呢?因为这个相当于是my线程被调用了两次。而不是两个线程启动。
// thread.start();
// thread.start();
//正解
thread.start();
thread2.start();
}
}