Я создал класс утилиты для получения информации о работающих потоках. один поток, называемый MQTT_THREAD
, запускается при нажатии кнопки. и у меня есть другая кнопка с именем play
, при нажатии она должна сначала проверить, существует ли нить MQTT_THREAD
или, другими словами, родилась или нет.Как проверить, родился ли нить?
Во время выполнения я нажимаю кнопку, начинающуюся с MQTT_THREAD
, и когда я нажимаю кнопку play
, она вытесняет ее the thread MQTT_THREAD is not existing
. Я верю, что он самый популярный, потому что мой вопрос подталкивает потоки или небольшая ошибка в логике. Ниже мой код.
Просьба, пожалуйста, иметь в нем лок и сообщить мне, что я пропустил.
методы Code_utitlity использовали
public static Thread[] getAllRunninthreads() {
Set<Thread> threadSet = Thread.getAllStackTraces().keySet();
Thread[] threadArray = threadSet.toArray(new Thread[threadSet.size()]);
return threadArray;
}
public static boolean isThreadExist(String threadName) {
boolean isExist = false;
for (int i = 0; i < ThreadsUtility.getAllRunninthreads().length; i++) {
if (ThreadsUtility.getAllRunninthreads()[i].getName().equals(threadName)) {
return (isExist = true);
}
}
return isExist;
}
Code_at основной нити:
if (e.getSource() == Bplay) {
if (!ThreadsUtility.isThreadExist(MQTT_THREAD)) {
System.out.println(MQTT_THREAD + " is not existing.");
}else {
System.out.println(MQTT_THREAD + " exists.");
if (!ThreadsUtility.isThreadExist(FILE_THREAD)) {
System.out.println(FILE_THREAD + " is not existing.");
}else {
System.out.println(FILE_THREAD + " exists.");
}
}
Можете ли вы добавить бит кода для того, где вы создаете, и отключить поток? –