mengambil semula benang dengan namanya di Java bukan operasi langsung, satu kaedah. Java tidak menyediakan kaedah seperti Thread.getThreadByName()
. Sebaliknya, anda perlu melangkah melalui benang yang ada dan membandingkan nama mereka. Ini biasanya dilakukan menggunakan Thread.getAllStackTraces()
. Kaedah ini mengembalikan Map
di mana kunci adalah Thread
objek dan nilai -nilai adalah jejak timbunan masing -masing. Kami kemudian boleh melangkah melalui peta ini dan periksa nama setiap benang.
Berikut adalah contoh:
import java.util.Map; import java.util.Set; public class FindThreadByName { public static Thread getThreadByName(String threadName) { Map<Thread, StackTraceElement[]> threads = Thread.getAllStackTraces(); Set<Thread> threadSet = threads.keySet(); for (Thread thread : threadSet) { if (thread.getName().equals(threadName)) { return thread; } } return null; // Thread not found } public static void main(String[] args) { Thread myThread = new Thread(() -> { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } }, "MySpecialThread"); myThread.start(); Thread foundThread = getThreadByName("MySpecialThread"); if (foundThread != null) { System.out.println("Thread found: " + foundThread.getName()); } else { System.out.println("Thread not found."); } } }
Kod ini melangkah melalui semua benang aktif dan mengembalikan benang pertama yang sepadan dengan nama yang disediakan. Jika tiada benang dengan nama itu dijumpai, ia kembali null
. Kaedah
Atas ialah kandungan terperinci Dapatkan thread mengikut nama di Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!