Задумка следующая: я добавляю в БД запись, но перед этим хочу немного "проанимировать" процесс добавления, выводя в консоль последовательно значения: 10%...20%...30%... и т.д. до конца... в конце вывести слово "Добавлен!". Каждый процент необходимо выводи с интервалом в секунду, т.е. сначала секунда без информации, потом через секунду вывести 10%..., еще через секунду 20%... и т.д. Вроде все получается, но слово "Добавлен" вылетает уже в самом начале работы программы, да и вообще вся программа летит вперед своей жизнью совершенно не дожидаясь пока проработает до конца блок кода с таймером. Поясните пожалуйста, как правильно записать, чтобы программа дождалась окончания работы в блоке таймера и только потом в зависимости от успешного или неуспешного добавления записи, проработала дальше.
import java.util.Timer;
import java.util.TimerTask;
public class MyTimer{
public static int proc = 0;
public static void main(String[] args){
final Timer writeTime = new Timer();
writeTime.schedule(new TimerTask() {
@Override
public void run(){
if(proc < 100) {
proc = proc + 10;
System.out.print(proc + "%...");
}
}
},1000,1000);
System.out.println("Добавлен"!);
}
}
Если Timer
не принципиален
//создаем новый поток
Thread mThread = new Thread(new Runnable() {
// то что будет выполняться в потоке
public void run() {
int proc = 0;
while(proc < 100) {
proc = proc + 10;
System.out.print(proc + "%...");
try {
Thread.sleep(1000); // задержка 1000 мс
} catch (InterruptedException e) {
e.printStackTrace();
}
}
// можно в это место перенести вывод и убрать Thread.join(); тогда основной поток висеть не будет
}
});
//запускаем поток
mThread.start();
//подождем пока поток завершит свое исполнение
mThread.join();
System.out.println("Добавлен");
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Прошу дать советЯ начал проходить курс по Swift
Суть алгоритма в вычислении определенного интеграла квадратурным методом Гауссаg10c1,