Я пытаюсь реализовать приложение Java Swing GUI с игрой.Игра заключается в подсчете количества нажатий кнопки за 5 секунд.
Я использую sqlite4java
в одном из моих проектов с графическим интерфейсом Java.Это довольно минималистично, поэтому поддерживает только однопоточные приложения.
Я хочу выполнить SQL-запрос после истечения 5 секунд.У меня есть поток, запущенный в прослушивателе onclick моей кнопки, метод run () которого реализован следующим образом:
run() {
timeLeft = 5;
score = 0;
while(timeLeft>0)
Thread.sleep(100);
timeLeft -= 0.1;
update left time on GUI;
}
// time is up
execute some SQLite INSERT query here;
}
И поскольку sqlite4java поддерживается в однопоточном режиме, он генерирует исключение:
SQLite error:com.almworks.sqlite4java.SQLiteException:
[-98] DB[1] confined(Thread[main,5,]) used (Thread[Thread-3,6,main])
Как я могу выполнить после завершения потока (вне потока)?Это вызывает исключение, потому что поток вызываемого и поток, в котором создается база данных (Основной поток), не совпадают.
Как я могу сделать основной поток сигнальным (и обработать этот сигнал в основном потоке) после этогопоток заканчивается?
Все, чего я хочу добиться, - это выполнить запрос, чтобы добавить оценку пользователя в список рекордов.Это не домашнее задание, я пытаюсь разработать приложение для моей концепции ORM.