Я довольно новичок в Java; (< = lol Я просто набрал точку с запятой вместо точки (после 2-х дней безостановочного кодирования). Оставляя ее там, чтобы все могли смеяться: D)Вещи, похоже, работают параллельно Java
Я не был уверен, что искал, поэтому название не очень полезно.
Best я могу описать, что вещи, кажется, идут параллельно. Я не знаю, как объяснить это, так что я покажу вам пример. у меня есть класс таймера, который ждет на протяжении каждой петли.
Если я запускаю следующий метод (не в классе таймера, а только один), он не дожидается завершения законченной части (Таймера), например, для цикла делать. Он одновременно вычисляет код ниже.
Как заставить программу ждать окончания таймера? Кроме того, почему он работает параллельно?
Я урезал большинство ненужных кодов, но, пожалуйста, спросите, нужен ли вам весь код.
t = Timer;
public void turnend() {
if (leftover == 0) {
housenumber = 1;
Runnable r = new Runnable() {
@Override
public void run() {
//code1
if (housenumber == 8) {
t.stopTimer();
}
}
};
t = new Timer(r, 500, true);
}
//code 2
}
//code 1 and 2 runs at the same time
EDIT: Таймер класса
import android.os.Handler;
public class Timer {
private Handler handler;
private boolean paused;
private int interval;
private Runnable task = new Runnable() {
@Override
public void run() {
if (!paused) {
runnable.run();
Timer.this.handler.postDelayed (this, interval);
}
}
};
private Runnable runnable;
public int getInterval() {
return interval;
}
public void setInterval(int interval) {
this.interval = interval;
}
public void startTimer() {
paused = false;
handler.postDelayed (task, interval);
}
public void stopTimer() {
paused = true;
}
public Timer (Runnable runnable, int interval, boolean started) {
handler = new Handler();
this.runnable = runnable;
this.interval = interval;
if (started)
startTimer();
}
}
исполняемую объект, который работает на своем собственном потоке. Вы можете использовать обратный вызов, когда таймер заканчивается использованием runOnUiThread – Striker
@Striker Right. Но я хочу ждать Runnable. Я только что прочитал о обратном вызове, и кажется, что он просто буквально перезванивает, когда Таймер заканчивается. Следовательно, он не ждет Таймера. Пожалуйста, поправьте меня, если я ошибаюсь. – Seung
Зачем ждать? Вы можете выполнить код, который у вас есть в методе 'run' после« кода 2 ». Кроме того, что это за класс 'Timer'? Это/запускает ли он 'Thread' (для параллельного запуска кода)? Кажется, это не 'java.util.Timer' или' javax.swing.Timer', и я не знаю, какой из них встроен в android. – zapl