В настоящее время я использую OSGi
для создания datamanager, который периодически получает данные от некоторых датчиков. Способ я приобретения данных выглядит следующим образом:Использование консоли OSGi во время выполнения потока
public void run() {
while (!stop || !Thread.currentThread().isInterrupted()) {
try {
List<DataEntry> aux;
long millis = System.currentTimeMillis();
for (DataLogger dl : loggers) {
String name = dl.getDriverName();
aux = dataTable.get(name);
if (aux == null) {
aux = new ArrayList<DataEntry>();
}
dl.readValue();
DataEntry de = new DataEntry(dl.getCurrentValue(), millis);
aux.add(de);
dataTable.put(dl.getDriverName(), (ArrayList<DataEntry>) aux);
}
Thread.sleep(PERIOD);
// ***** Exceptions *****
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Проблема я столкнулся в том, что я не могу взаимодействовать с console
в то время как thread
работает, а это значит, что нет никакого способа, я могу остановить сверток выполнение с консоли и взаимодействие с исполнением.
Есть ли способ, чтобы bundle
работал в другой теме, чем основной?
*** UPDATE: Я вызывал метод запуска напрямую, вместо того чтобы запускать поток, и это было проблемой.
Большое спасибо! Я просто понял, что я не запускаю нить, вместо этого я вызывал метод run напрямую. Вы были в курсе своих предположений! – localhostloco