我正在嘗試編寫一個控制檯程序以在同一行和位置上遞歸顯示當前時間。使時間出現在同一位置的控制檯程序
我嘗試了很多,但它使用正常的System.out.println
, ,因此我使用了printstream obj。現在的事情是,它出現在相同的位置,但沒有得到更新。
我無法確定問題是否出現在線程或printstream中。請幫助我解決這個問題,或者是否有任何其他方法讓事情在控制檯op中的相同位置遞歸顯示?
import java.util.Date;
import java.io.IOException;
import java.io.*;
public class DateDemo {
// boolean flag=true;
public static void main(String args[]) {
DisplayTime dt=new DisplayTime();
Thread thread1=new Thread(dt,"MyThread");
//thread1.start();
thread1.run();
}
}
class DisplayTime extends Thread{
public void run(){
try{
while(true){
showTime();
Thread.sleep(1000);
}
}catch(InterruptedException e){
System.err.println(e);
}
}
public void showTime(){
try{
PrintStream original = new PrintStream(System.out);
//replace the System.out, here I redirect to
System.setOut(new PrintStream(new FileOutputStream("stdout.log")));
//System.out.println("bar"); // no output
Date date =new Date();
original.print(date.toString());
//System.out.println(date.toString());
System.out.flush();
// output to stdout
//original.close();
}
catch(Exception e){
System.err.println(e);
}
}``
}
首先,使用Thread.start()而不是Thread.run()執行一個線程。 – Sanjeev
是的,你正在寫Sanjeev調用Thread.run()會在同一個線程中執行run()方法,而無需啓動新線程。所以使用Thread.start()來代替。 –