У меня есть класс драйвера с именем Advantech
, который хранится в ArrayList
.Я создаю экземпляр и initialize
мой класс.Класс Advantech
extends
Thread
и класс Advantech
имеют метод run()
.Поток запускается внутри класса, как только он устанавливает соединение с устройством.(this.start();
)
Можно ли запустить thread
, а затем сохранить экземпляр этого класса в ArrayList
?
Когда я создаю экземпляр класса и сохраняю его обратно в список массивов (перезаписывая предыдущую позицию) с помощью set(pos, class)
, я получаю NullPointerException
при вызове class.isAlive()
.
Есть ликакие-нибудь альтернативы / лучшие способы сделать это?
Я знаю, это может звучать странно, но я использую ArrayList
, потому что в противном случае мне нужно создать восемь классов, чтобы начать восемь потоков, например:
Advantech adv1;
Advantech adv2;
Advantech adv3;
Advantech adv4;
Все параметры одинаковы для каждого экземпляра.
Код:
private ArrayList<Advantech> advantech = null;
private Advantech adv = null;
....
adv = new Advantech(/* parameters */);
adv.initialize();
advantech.set(0, adv);
В Advantech.java:
public class Advantech extends Thread {
....
public void run() {
while(!done) { // do some work }
}
}