Kaedah untuk menyelesaikan pengecualian keadaan benang Java (ThreadStateException)
Pengenalan:
Apabila menggunakan pengaturcaraan berbilang benang Java, kita sering menghadapi masalah pengecualian keadaan benang (ThreadStateException). Apabila kita memanggil kaedah tertentu benang, jika keadaan benang tidak memenuhi keperluan kaedah, ThreadStateException akan dilemparkan. Artikel ini akan memperkenalkan punca dan penyelesaian pengecualian status urutan, dan memberikan contoh kod yang berkaitan.
Punca:
Benang mempunyai keadaan yang berbeza pada masa yang berbeza, termasuk Baharu, Boleh Dijalankan, Berjalan, Disekat, Menunggu, Menunggu Bermasa dan Ditamatkan dsb. Apabila kita memanggil kaedah tertentu benang, benang dikehendaki berada dalam keadaan tertentu Jika keadaan benang semasa tidak sepadan dengan keadaan yang diperlukan oleh kaedah tersebut, ThreadStateException akan dibuang. . Pada masa ini, status urutan bertukar daripada status "baharu" kepada status "boleh dijalankan".
Thread thread = new Thread(myRunnable); thread.start(); // 启动线程
Apabila thread memperoleh sumber CPU dan memulakan pelaksanaan, status thread bertukar daripada status "runnable" kepada "running".
class MyRunnable implements Runnable { public void run() { System.out.println("线程正在执行"); } }Apabila pelaksanaan thread tamat atau kaedah stop() dipanggil, status thread akan memasuki keadaan "ditamatkan".
thread.stop(); // 停止线程
Kendalikan thread tidur dan tunggu dengan betul:
try { Thread.sleep(5000); // 线程休眠5秒 } catch (InterruptedException e) { e.printStackTrace(); } Thread thread1 = new Thread(new MyRunnable()); Thread thread2 = new Thread(new MyRunnable()); thread1.start(); thread2.start(); try { thread1.join(); // 等待thread1结束 thread2.join(); // 等待thread2结束 } catch (InterruptedException e) { e.printStackTrace(); }Gunakan kaedah berkaitan status benang untuk menilai:
if (thread.getState() == Thread.State.RUNNABLE) { // 线程处于可运行状态执行相应操作 } else { // 线程状态异常,执行相应处理 }
Di atas adalah kaedah untuk menyelesaikan pengecualian status thread Java, saya harap ia akan membantu anda.
Atas ialah kandungan terperinci Kaedah untuk menyelesaikan pengecualian status benang Java (ThreadStateException). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!