와 같은 메소드를 제공하지 않습니다. 대신 사용 가능한 스레드를 반복하고 이름을 비교해야합니다. 이것은 일반적으로 Thread.getThreadByName()
를 사용하여 수행됩니다. 이 메소드는 키가 Thread.getAllStackTraces()
객체이고 값은 해당 스택 트레이스입니다. 그런 다음이 맵을 반복하고 각 스레드의 이름을 확인할 수 있습니다. Map
예는 다음과 같습니다. Thread
이 코드는 모든 활성 스레드를 통해 반복되어 제공된 이름과 일치하는 첫 번째 스레드를 반환합니다. 해당 이름이없는 스레드가 없으면 .
메소드는 해당 이름으로 발생하는 첫 번째 스레드 만 반환합니다. 당신은 그들 사이를 구별 할 수 없습니다.
스레드 이름 변경 : 를 사용하여 수명 동안 스레드 이름을 변경할 수 있습니다. 이름이 처음으로 검색 된 후에는 참조가 유효하지 않으면 참조가 유효하지 않습니다.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."); } } }
스레드 종료 : 찾기 전에 원하는 스레드가 종료되면 검색이 null
에 액세스하는 동안 Thread.getAllStackTraces()
더 강력한 대안 고유 식별자 :
위 내용은 Java에서 이름으로 스레드를 얻습니다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!