呼び出し方法:
/** *クリック数/月(年)スレッドの数 */public void yearlyclickthread(){//パラメーターstring year = getPara( "year"); //統計データセットxリスト<string> xlist = new ArrayList <String>(); xlist.add( "1月"); xlist.add( "February"); xlist.add( "March"); xlist.add( "April"); xlist.add( "may"); xlist.add( "June"); xlist.add( "7月"); xlist.add( "7月"); xlist.add( "August"); xlist.add( "9月"); xlist.add( "10月"); xlist.add( "11月"); xlist.add( "12月"); // Statistics Dataset y List <Integer> ylist = new ArrayList <Integer>(); //統計スレッドステータスリスト<thread>スレッドリスト= new ArrayList <shood>(); //スレッドステータスコードint threadstatuscode = 0; // counter int count = 0; //(int m = 1; m <= 12; m ++){//日付パラメータリスト<string> datelist = new arrayList <string>(); // string date = ""; // int int days = calendarutil.weekformonth(integer.valueof(year)、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(date); } //スレッドスレッドを起動する= new readlogfilethreadbyyear(datelist); thread.start(); try {// hibernate thread.sleep(1000l); } catch(arturnedexception e){e.printstacktrace(); } threadlist.add(thread); } //(thread 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(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(); }スレッド方法:
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;import java.util.List;import java.util.map; Import com.ninemax.util.loganalysis.tool.constantutil;/** *マルチスレッドには返品値がありません * * @author darker * */public class readlogfilethreadbyyearsスレッド{// date array private list <string> lickdate; //共有データ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(){// parameters map <string、object> map = new hashmap <string、object>(); // fileinputStreamを使用してファイル情報fileinputStream fis = nullを読み取ります。 // inputStreamReaderを使用してinputStreamReader reader = nullをトランスコードします。 // bufferedreaderを使用してbufferedreader bufreader = null; // stringbufferを使用してファイルコンテンツコンテナstringbuffer buf = new StringBuffer(); // clicks/month int monthclick = 0; for(int i = 0; i <clickdate.size(); i ++){//ファイルclicklogfile = newファイルを取得する(constantutil.loglocation、 "article.click。"+ clickdate.get(i)+ ".txt"); //ファイルが存在するかどうかを決定する場合(!clicklogfile.exists()|| clicklogfile.isdirectory()){system.err.println(clickdate.get(i) + "ファイルは存在しません..."); } else {try {//ノードストリームfis = new fileinputStream(clicklogfile); //ストリームreader = new inputstreamReader(fis、 "utf-8"); //プロセスストリームbufreader = new BufferedReader(Reader); // counter int count = 0; // string line = ""を読み取ります。 // fileを読み取りhired((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(); }最後に{//ストリームを閉じる{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ページ全文を読んでください