多線程-1
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();
}
}
多線程-1