2014-02-18 1 views
0

Я хочу создать набор данных для моей диаграммы, который будет обновляться один раз в секунду. Но я использую команды ssh для получения данных. Например, когда я вызываю sar -n DEV 1 1 на удаленном компьютере, он отвечает через 3 секунды. Я вызываю 5-6 команд серийно, как это, поэтому для обновления моей диаграммы требуется много времени. Поэтому мне нужно отправить эти команды в потоки, поэтому я могу ждать короче, чем раньше. Я не профессионал в потоковом режиме на Java.Возможно ли многопоточность в Jfreechart?

Вот пример кода:

public Mygraph()// my constructor function, it puts some components for my form. 
{ 
    // some code 

    timer = new Timer(FAST, new ActionListener() { 

     @Override 
     public void actionPerformed(ActionEvent e) { 
      TimePeriod period = new Second(); 

      for (int j = 0; j < PARAM.length; j++) { 

       String sonuc = PRS.Pars1(SES.CONNECTION, "sar -n DEV 1 1 | grep -wF " + SUTUN 
         + " | awk '{ print $" + PARAM[j] + " }' | tail -1"); 

       String sutun = PRS.Pars1(SES.CONNECTION, 
         "sar -n DEV 1 1 | grep IFACE | tail -1 | awk '{ print $" + PARAM[j] 
           + " }'"); 

       // i need to get these "sonuc" and "sutun" variables 
       // concurrently above. Because each command takes 2-3 
       // seconds to execute. 
       dataset.add(period, Double.parseDouble(sonuc), sutun); 

       if (dataset.getItemCount() > COUNT) { 
        TimePeriod firstItemTime = dataset.getTimePeriod(0); 
        dataset.remove(firstItemTime, sutun); 

       } 
      } 

     } 

    }); 

    // some code 
} 

ответ

2

JFreeChart является не поточно. Как и любой другой компонент AWT/Swing, любые обновления JFreeChart должны выполняться на EDT.

Это означает, что вы можете (и, вероятно, должны) поместить свою загрузку в другой поток, и только обновить свою диаграмму (на EDT) после вы загрузили весь набор данных.

+0

+1 JFreeChart основан на AWT, но остальное правильно описано == должно быть 'точно так же, как любой другой компонент AWT/Swing, ...' – mKorbel

+0

Вы правы. Ред. –

+0

На самом деле, не для nitpick, но похоже, что JFreeChart хотя бы частично построен на Swing. Например, ChartPanel расширяет JPanel: http://www.jfree.org/jfreechart/api/javadoc/org/jfree/chart/ChartPanel.html –

Смежные вопросы