utilまたはswingTimerを使用すると、システムがハング/フリーズします。どうすればこれに乗ることができますか?
他のユーザーインターフェイス私はこのタスクを以下のように呼び出しています。再試行した後、システム全体がフリーズします。
TimerTask t = new Task("Local",a);
java.util.Timer timer = new java.util.Timer();
timer.scheduleAtFixedRate(t, 0, 10000);
試してみてください3:失敗
import java.util.Timer;
import java.util.TimerTask;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
public final class Task extends TimerTask {
private static Timer timer;
//private static ui.V v;
private static int input;
private static String sinput;
public static void main (String... arguments ) {
TimerTask f = new Task("Local:",20);
timer = new Timer();
timer.scheduleAtFixedRate(f, 0, 10000);
}
public Task(String sinput, int input) {
this.input = input;
this.sinput = sinput;
}
public void run() {
System.out.println("Will freeze, dont freeze.....");
//v = new ui.V(sinput); loading a user interface
//v.up(input); show the value
try {
Thread.sleep(4000); // wait 4 seconds
} catch (InterruptedException ex) {
Logger.getLogger(Task.class.getName()).log(Level.SEVERE, null, ex);
}
//v.killme(); // kill the display
timer.cancel();
}
}
私も次の方法を試しましたが、すべて同じ結果システムがフリーズし、手動でPCの電源をオフにしてからオンにする必要があります。
0を試してください:失敗
t = new java.util.Timer();
t.schedule(new TimerTask() {
@Override
public void run() {
// same
}
}, 0, 10000);
試してください1:失敗
t = new javax.swing.Timer(10000, new ActionListener() {
public void actionPerformed(ActionEvent ae) {
// same
}
});
t.start();
試してください2:失敗
new Thread(new Runnable() {
public void run() {
t = new javax.swing.Timer(10000, new ActionListener() {
public void actionPerformed(ActionEvent ae) {
// same
}
});
t.start();
}
}).start();