30/09/2018, 20:19

Thắc mắc về cách đếm thời gian trong java

Em có viết một đoạn code đếm thời gian trong có chức năng như đồng hồ bấm giờ. Cho em hỏi liệu thời gian chạy theo đoạn code có đúng theo chuẩn bình thường không.Làm như thế nào để thời gian chạy đúng.Dưới đây là đoạn code của em:

public void run() {
        try {
            for (;;) {
                try {
                    synchronized (this) {
                        if (resume) {
                            wait();
                        }
                        if (Stop) {
                            break;
                        }
                    }
                } catch (Exception er) {
                    System.out.println(th.getName() + "Luồng bị ngắt!");
                }
                ms++;
                Thread.sleep(1);
                if ((ms % 100) == 0) {
                    ds++;

                }
                if (ms == 1000) {
                    ss++;
                    ms = 0;
                }
                if (ss == 60) {
                    mm++;
                    ss = 0;
                }

                strMS = mm + ":" + ss + ":" + ms;
                
                RunTime.setText("Time: "+strMS);
                //System.out.println(strMS);
            }
        } catch (Exception er) {
            System.out.println("Event Time:" + er);
        }
        System.out.println("Stop Thread!!");
        // throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

Tâm Ninja viết 22:35 ngày 30/09/2018
public void run() {
    long startTime = System.currentTimeMillis();
    try {
        while (true) {
            try {
                synchronized (this) { // ??
                    if (resume)
                        wait();
                    if (Stop)
                        break;
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            Thread.sleep(1); // ??
            long currentTime = System.currentTimeMillis();
            long delta = currentTime - startTime;
            long mm = deltaTime / 1000 / 60;
            long ss = deltaTime / 1000 % 60;
            long ms = deltaTime % 1000;

            String format = "%1$s:%2$s:%3$s"
            strMS = String.format(format, mm, ss, ms);
            RunTime.setText("Time: "+strMS);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

Mình viết lại code inline nhé.

Leng Keng viết 22:30 ngày 30/09/2018

thank bạn, để mình chạy thử

Leng Keng viết 22:21 ngày 30/09/2018
synchronized (this) { // ??
                    if (resume)
                        wait();
                    if (Stop)
                        break;
                }

Mình đồng bộ luồng thui. thêm chức năng dừng vòng lặp ý mà.

Bài liên quan
0