Метод вызова:
/** * Количество кликов/месяц (год) поток */public void higanclickthread () {// Получить параметры String Год = getPara ("Год"); // Статистический набор данных x List <string> xlist = new ArrayList <string> (); xlist.add ("январь"); xlist.add ("февраль"); xlist.add ("март"); xlist.add ("апрель"); xlist.add ("May"); xlist.add ("июнь"); xlist.add ("июль"); xlist.add ("июль"); xlist.add ("Август"); xlist.add ("сентябрь"); xlist.add ("Октябрь"); xlist.add ("ноябрь"); xlist.add ("декабрь"); // Статистические наборы данных y List <Integer> ylist = new ArrayList <Integer> (); // Список статистики по потоке потока <thread> threadlist = new ArrayList <thenk> (); // код состояния потока int statatuscode = 0; // счетчик int count = 0; // Ежемесячный анализ журнала для (int m = 1; m <= 12; M ++) {// Собрание списка параметров даты <string> datelist = new ArrayList <string> (); // строка date = ""; // определить, сколько дней int Days = calendarutil.weekformonth (Integer.valueof (Год), м); // Дата комбинации для (int i = 1; i <= days; i ++) {if (i <= 9) {if (m <= 9) {date = year + "-0" + m + "-0" + i; } else {date = Год + "-" + M + "-0" + I; }} else {if (m <= 9) {date = Год + "-0" + M + "-" + i; } else {date = Год + "-" + M + "-" + i; }} datelist.add (date); } // Запуск потока потока = new ReadLogFileThreadByyear (datelist); Thread.Start (); try {// hibernate thread.sleep (1000l); } catch (прерванное искусство e) {e.printstacktrace (); } threadlist.add (Thread); } // Получить статус потока для (потока T: Threadlist) {if (t.getState (). ToString (). Equals ("verminated")) {threadStatuscode += 1; }} // Определите, были ли все потоки выполнены, если (threadStatuscode == 12) {// Приема параметров // list <map <string, object >> list = readlogfileThread.list.sublist (0, 12); Список <map <string, object >> list = readlogfileThreadByyear.list; // Установить параметры для (int p = 0; p <list.size (); p ++) {count+= (int) list.get (p) .get ("clickCount"); if (list.get (p) .get ("month"). equals ("01")) {ylist.add ((integer) list.get (p) .get ("clickCount")); } else if (list.get (p) .get ("month"). equals ("02")) {ylist.add ((integer) list.get (p) .get ("clickCount")); } else if (list.get (p) .get ("month"). equals ("03")) {ylist.add ((integer) list.get (p) .get ("clickCount")); } else if (list.get (p) .get ("month"). equals ("04")) {ylist.add ((integer) list.get (p) .get ("clickCount")); } else if (list.get (p) .get ("month"). equals ("05")) {ylist.add ((integer) list.get (p) .get ("clickCount")); } else if (list.get (p) .get ("month"). equals ("06")) {ylist.add ((integer) list.get (p) .get ("clickCount")); } else if (list.get (p) .get (p) .get ("month"). equals ("07")) {ylist.add ((Integer) list.get (p) .get ("clickCount")); } else if (list.get (p) .get ("month"). equals ("08")) {ylist.add ((integer) list.get (p) .get ("clickCount")); } else if (list.get (p) .get ("month"). equals ("09")) {ylist.add (((Integer) list.get (p) .get ("clickCount")); } else if (list.get (p) .get ("month"). equals ("10")) {ylist.add ((integer) list.get (p) .get ("clickCount")); } else if (list.get (p) .get ("month"). equals ("11")) {ylist.add ((integer) list.get (p) .get ("clickCount")); } else if (list.get (p) .get ("month"). equals ("12")) {ylist.add ((integer) list.get (p) .get ("clickCount")); }}} setattr ("totalCount", count); setattr ("x", xlist); setattr ("y", ylist); renderjson (); }Метод потока:
пакет com.ninemax.util.loganalysis; import java.io.bufferedReader; импорт java.io.file; импорт java.io.fileinputstream; импорт java.io.ioexception; импорт java.io.InptreamReader; импорт java.Util.Arraylist; java.ut.hashMap; java.util.map; import com.ninemax.util.loganalysis.tool.constantutil;/** * MultiThreading не имеет возвратного значения * * @author Darker * */public class readlogfileThreadByyear extends Thread {// Date Array Private <String> clickDate; // Общие данные общедоступного статического списка <map <string, object >> list = new ArrayList <map <string, object >> (); public readlogfileThreadByyear (list <string> clickdate) {this.clickDate = clickDate; } / ** * Читать нажмите Файл журнала * * Пример: article.click.2016-05-20.txt * * @return * / public void run () {// получение параметров карты <строка, объект> map = new hashmap <string, object> (); // Использование FileInputStream для чтения информации о файле FileInputStream fis = null; // Использование inputStreamReader для транскода inputStreamReader Reader = null; // Использовать BufferedReader для буферизации BufferedReader bufreader = null; // Использование StringBuffer для получения контейнера содержимого файла stringBuffer buf = new StringBuffer (); // клики/месяц int monthclick = 0; для (int i = 0; i <clickdate.size (); i ++) {// Получить файл файла clicklogfile = new file (constantutil.loglocation "article.click."+ clickdate.get (i)+ ".txt"); // определить, существует ли файл if (! Clicklogfile.exists () || clicklogfile.isdirectory ()) {System.err.println (clickdate.get (i) + «Файл не существует ...»); } else {try {// node Stream fis = new FileInputStream (clicklogfile); // конвертировать stream Reader = new InputStreamReader (FIS, "UTF-8"); // Процесс Stream Bufreader = new BufferedReader (Reader); // счетчик int count = 0; // Читать строки line = ""; // Читать файл while ((line = bufreader.readline ())! = Null) {count ++; // получение данных if (! Line.equals (null) &&! Line.equals ("")) {buf.append (line + "/n"); }} if (count == 0) {count = 0; } else {count = count - 1; } monthclick += count; } catch (Exception e) {e.printstackTrace (); } наконец {// закройте поток try {bufreader.close (); reader.close (); fis.close (); } catch (ioException e) {e.printstackTrace (); }}}} map.put ("month", clickdate.get (0) .sub sequestence (5, 7)); if (monthclick == 0) {map.put ("clickCount", 0); } else {map.put ("clickCount", Monthclick); } // map.put ("clickContent", buf.tostring ()); list.add (map); }} 1 2next page Прочитайте полный текст