Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > javax.swing.Timer-грузит ли такой тайм приложение?


Автор: Killer_13 31.3.2012, 17:23
Здравств, вот пробовал сначало делать таймер из java.util но там мне не понравилось, что нету дефолтных старт, стоп.
Вот такое у меня получилось. Скажите пожалуйста, не сильно ли такой таймер будет грузить приложение? Точнее 3 таких таймера, один общий, а два для учета времени каждого из игроков.

Код

package chess.util;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.NumberFormat;

import javax.swing.Timer;

import chess.local.ChessGUILocal;
import chess.network.ChessGUINetwork;

public class ChessTimer {

    private int miliseconds = 3590000;
    private NumberFormat format;

    private Timer chessTimer;

    private ChessGUILocal chessGUILocal;
    private ChessGUINetwork chessGUINetwork;

    public ChessTimer(ChessGUILocal chessGUILocal) {
        this.chessGUILocal = chessGUILocal;
    }

    public ChessTimer(ChessGUINetwork chessGUINetwork) {
        this.chessGUINetwork = chessGUINetwork;
    }

    public void timerStart() {
        ActionListener taskPerformer = new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                if (chessGUILocal != null) {
                    chessGUILocal
                            .getChessTotalTimerLabel()
                            .setText(
                                    ((miliseconds / 3600000) + ":"
                                            + ((miliseconds % 3600000) / 60000)
                                            + ":" + ((miliseconds % 60000) / 1000)));
                    miliseconds += 1000;
                } else {
                    // TODO ChessGUINetwork parametr
                }
            }
        };
        chessTimer = new Timer(1000, taskPerformer);
        chessTimer.start();
    }
    
    public void timerStop(){
        chessTimer.stop();
    }

}


Это пока тестовый вариант.

Спасибо

Автор: dorogoyIV 31.3.2012, 18:54
если винда, - "Пуск->Выполнить->taskmgr" - там посмотри сколько памяти забирает java.exe (javaw.exe)

Автор: jk1 31.3.2012, 21:07
Таймеры, вне зависимости от их количества, ждут в одном отдельном потоке. То есть оверхед на таймеры равносилен наличию еще одного потока. У нас как-то был опыт одновременной работы порядка сотни таймеров, проблем с производительностью не было.

Автор: Killer_13 1.4.2012, 12:28
Понял, вопрос решен!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)