안녕하세요 모두
Java에서 멀티 스레딩에 문제가 있습니다. 이것은 나의 시나리오이다. 나는 LocalTime이라는 클래스를 가지고있다. 이 클래스는 시스템의 현재 시간을 알아야하며 getCurrentTime 인 메서드를 통해이 값을 Form에 반환합니다. 이것은이 클래스
Java의 멀티 스레딩
public class LocalTime implements Runnable {
private String currentTime=null;
Thread t;
private long time;
private long h;
private long m;
private long s;
public LocalTime() {
t=new Thread(this,"current Time");
t.start();
}
public synchronized void run() {
try {
for(;;){
Thread.sleep(1000);
time = System.currentTimeMillis()/1000;
h = (time/3600) % 24;
m = (time/60) % 60;
s = time % 60;
this.currentTime=h+":"+m+":"+s;
}
} catch (InterruptedException ex) {
Logger.getLogger(LocalTime.class.getName()).log(Level.SEVERE, null, ex);
}
}
public String getCurrentTime(){
return this.currentTime;
}
}
의 코드이며,이 기본 폼의 코드입니다 :
이public MainForm1() {
initComponents();
LocalTime l=new LocalTime();
this.jLabel1.setText(l.getCurrentTime());//show the current time
//The rest of code
}
지금 내 큰 문제가하는 현재의 시스템 시간을 보여줍니다 jLabel1 텍스트입니다 1 초마다 업데이트되지 않습니다. 의 줄 앞에 (;;)에 을 삽입하면 jLabel1.setText (l.getCurrentTime())의 나머지 코드는 재사용 할 수 없습니다. 이 오류를 해결하려면 어떻게해야합니까? 이 가정들에 대한 해결책을 제안 해주십시오. MainForm1에 스레드를 실행할 수 있다는 것도 알고 있지만이 문제에 대한 해결책을 원합니다.
가능한 복제본 http://stackoverflow.com/questions/5183318/improve-accuracy-of-my-timer-thread –