Здравствуйте.
Только начал изучение потоков.
Написал простенькую программу отображающую системное время на трёх линейных регуляторах.
При запуске программы, диспетчер задач Windows показывает увеличение файла подкачки на 45-50 МБ (Физической памяти: 1 ГБ).
Вопрос: должно ли так быть и, если нет, как это возможно исправить? А заодно может укажете на другие ошибки.
Заранее спасибо.
Вот код программы:
package org.vsubhuman;
import java.awt.*;
import java.util.*;
import javax.swing.*;
public class SliderClock extends Thread
{
JSlider jsldrHours;
JSlider jsldrMinutes;
JSlider jsldrSeconds;
SliderClock()
{
/* FRAME */
JFrame jfrm = new JFrame("Slider Clock");
jfrm.setLayout(new GridLayout());
jfrm.setSize(300, 300);
jfrm.setResizable(false);
jfrm.setLocation(362, 200);
jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jfrm.setVisible(true);
/* SLIDERS */
jsldrHours = new JSlider(JSlider.VERTICAL, 0, 24, 0);
jsldrMinutes = new JSlider(JSlider.VERTICAL, 0, 60, 0);
jsldrSeconds = new JSlider(JSlider.VERTICAL, 0, 60, 0);
// Set Tick Spacing
jsldrHours.setMajorTickSpacing(3);
jsldrHours.setMinorTickSpacing(1);
jsldrMinutes.setMajorTickSpacing(5);
jsldrMinutes.setMinorTickSpacing(1);
jsldrSeconds.setMajorTickSpacing(5);
jsldrSeconds.setMinorTickSpacing(1);
// Set Ticks and Labels Paint
jsldrHours.setPaintTicks(true);
jsldrHours.setPaintLabels(true);
jsldrMinutes.setPaintTicks(true);
jsldrMinutes.setPaintLabels(true);
jsldrSeconds.setPaintTicks(true);
jsldrSeconds.setPaintLabels(true);
// Set Focusable
jsldrHours.setFocusable(false);
jsldrMinutes.setFocusable(false);
jsldrSeconds.setFocusable(false);
/* ADDING */
jfrm.add(jsldrHours);
jfrm.add(jsldrMinutes);
jfrm.add(jsldrSeconds);
/* END */
JPanel panel = (JPanel)jfrm.getContentPane();
panel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
this.start();
}
public void run()
{
while(true)
{
try
{
jsldrHours.setValue(Calendar.getInstance().get(Calendar.HOUR_OF_DAY));
jsldrMinutes.setValue(Calendar.getInstance().get(Calendar.MINUTE));
jsldrSeconds.setValue(Calendar.getInstance().get(Calendar.SECOND));
Thread.sleep(500);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
public static void main(String[] args)
{
SwingUtilities.invokeLater(
new Runnable()
{
public void run()
{
new SliderClock();
}
}
);
}
}