통화 방법 :
/** * 클릭 수/월 (연도) 스레드 */public void yearClickTheRdread () {// 매개 변수 얻기 문자열 연도 = getPara ( "Year"); // 통계 데이터 세트 x 목록 <string> xlist = new Arraylist <string> (); xlist.add ( "1 월"); xlist.add ( "2 월"); xlist.add ( "March"); xlist.add ( "4 월"); xlist.add ( "May"); xlist.add ( "6 월"); xlist.add ( "7 월"); xlist.add ( "7 월"); xlist.add ( "8 월"); xlist.add ( "9 월"); xlist.add ( "10 월"); xlist.add ( "11 월"); xlist.add ( "12 월"); // 통계 데이터 세트 y 목록 <integer> ylist = new ArrayList <integer> (); // 통계 스레드 상태 목록 <STREAD> threadList = new ArrayList <Stride> (); // 스레드 상태 코드 int ThreadStatusCode = 0; // counter int count = 0; // (int m = 1; m <= 12; m ++)에 대한 월간 로그 분석 {// 날짜 매개 변수 수집 목록 <string> datelist = new ArrayList <string> (); // 문자열 날짜 = ""; // int days = calendarutil.weekformonth (integer.valueof (년), m); // (int i = 1; i <= days; i ++) {if (i <= 9) {if (m <= 9) {date = year + "-0" + m + "-0" + i; } else {date = year + "-" + m + "-0" + i; }} else {if (m <= 9) {date = year + "-0" + m + "-" + i; } else {date = year + "-" + m + "-" + i; }} datelist.add (날짜); } // 스레드 스레드 시작 스레드 = 새 readLogFileThreadByyear (datelist); thread.start (); {// hibernate thread.sleep (1000l); } catch (InterruptedException e) {e.printstacktrace (); } ordlelist.add (스레드); } // (스레드 t : threadList) {if (t.getState (). toString (). Equals ( "종료")) {ThreadStatusCode += 1; }} // 모든 스레드가 실행되었는지 여부를 결정합니다. list <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 ((정수) list.get (p) .get ( "clickcount")); } else if (list.get (p) .get ( "month"). equals ( "03")) {ylist.add ((정수) 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")); }}} statttr ( "TotalCount", count); setattr ( "x", xlist); setattr ( "y", ylist); renderjson (); }스레딩 방법 :
package com.ninemax.util.loganalysis; import java.io.bufferedReader; import java.io.file; import java.io.fileInputStream; import java.io.ioexception; import java.io.inputstreamreader; import java.util.arraylist; import java.util.hashmap; hashmap; java.util.map; import com.ninemax.util.loganalysis.tool.constantutil;/** * multithreading은 반환 값이 없습니다 * * @author darker * */public class readlogfilethreadbyyear 확장 스레드 {// date array private list <string> clickdate; // 공유 데이터 public static list <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를 사용하여 transcode inputStreamReader reader = null; // bufferedReader를 사용하여 버퍼 버퍼드 리더 bufreader = null; // StringBuffer를 사용하여 파일 컨텐츠 컨텐츠를받습니다. StringBuffer buf = new StringBuffer (); // 클릭/월 int monthclick = 0; for (int i = 0; i <clickdate.size (); i ++) {// 파일 파일 가져옵니다. clickLogFile = 새 파일 (constantUtil.loglocation, "article.click."+ clickDate.get (i)+ ".txt"); // 파일이 존재하는지 여부를 결정합니다 (! 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"); // 프로세스 스트림 bufreader = 새로운 버퍼드 리더 (Reader); // counter int count = 0; // 문자열 line = ""; // 파일 읽기 ((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 (예외 e) {e.printstacktrace (); } 마침내 {// 스트림을 닫으십시오 {bufreader.close (); reader.close (); fis.close (); } catch (ioexception e) {e.printstacktrace (); }}}} map.put ( "Month", ClickDate.get (0) .SubSequence (5, 7)); if (monthclick == 0) {map.put ( "ClickCount", 0); } else {map.put ( "ClickCount", MonthClick); } // map.put ( "ClickContent", buf.toString ()); list.add (지도); }} 1 2NEXT 페이지 전체 텍스트를 읽으십시오