моя задача - создать поток в этом порядке: если A start-> start B и C, если B start-> start D. И уничтожить их в обратном порядке Если D тогда B. Если B и C то А. Надеюсь, вы это поняли. Мне это удается, но я думаю, что есть лучший способ сделать это. Есть ли у вас какие-либо предложения?синхронизированное выполнение нити
После ваших комментариев я изменил свой код, и это намного проще. Но теперь это выглядит «глупо». Я хотел бы изменить хардкор, если заявления и реализация, любые советы? tnx за советом Я учусь с тобой.
Это мой новый код:
import java.util.*;
class RobotController implements Runnable{
String name;
public void run() {
Thread t = Thread.currentThread();
System.out.println(t.getName() + " status = " + t.isAlive());
System.out.println(t.getName() + " status = " + t.getState());
}
public static void main(String args[]) throws InterruptedException{
Thread thread_A = new Thread(new RobotController(), "Thread A");
Thread thread_B = new Thread(new RobotController(), "Thread B");
Thread thread_C = new Thread(new RobotController(), "Thread C");
Thread thread_D = new Thread(new RobotController(), "Thread D");
thread_A.start();
thread_A.join();
System.out.println(thread_A.getState());
thread_B.start();
thread_B.join();
System.out.println(thread_B.getState());
thread_C.start();
thread_C.join();
System.out.println(thread_C.getState());
thread_D.start();
System.out.println(thread_D.getState());
}
}
Похоже, вы должны определить задачу («Runnable») с родительским полем того же типа и булевским флагом, чтобы убить его. –
вы синхронизируете локальную переменную * метода *, это бессмысленно. –
'if A start-> start B и C' этим значением u означает, что после того, как' A' завершит свою работу, тогда 'B' начнется в последовательности .. и после того, как' B' завершает свою работу, тогда начинается 'C'? –