Método de llamadas:
/** * Número de clics/mes (año) hilo */public void anuallyClickThread () {// get parámetros cadena año = getpara ("año"); // Estadística Conjunto de datos X List <String> xList = new ArrayList <String> (); xlist.add ("enero"); xlist.add ("febrero"); xlist.add ("marzo"); xlist.add ("abril"); xlist.add ("may"); xlist.add ("junio"); xlist.add ("julio"); xlist.add ("julio"); xlist.add ("agosto"); xlist.add ("septiembre"); xlist.add ("octubre"); xlist.add ("noviembre"); xlist.add ("diciembre"); // estadística DataSet Y List <Integer> ylist = new ArrayList <Integer> (); // Lista de estado de hilo de estadísticas <Shifre> ThreadList = new ArrayList <Shifre> (); // código de estado de hilo int threadstatUscode = 0; // contador int count = 0; // Análisis de registro mensual para (int m = 1; m <= 12; m ++) {// recopilar parámetros de fecha list <string> dataList = new ArrayList <String> (); // string date = ""; // Determinar cuántos días int días = calendarutil.weekformonth (integer.valueof (año), m); // fecha de combinación para (int i = 1; i <= días; i ++) {if (i <= 9) {if (m <= 9) {date = año + "-0" + m + "-0" + i; } else {date = año + "-" + m + "-0" + i; }} else {if (m <= 9) {date = año + "-0" + m + "-" + i; } else {date = año + "-" + m + "-" + i; }} dataList.Add (fecha); } // Iniciar el hilo de hilo hilo = nuevo readLogFilethreadByYear (DataList); Thread.Start (); intente {// hibernate thread.sleep (1000l); } catch (InterruptedException e) {E.PrintStackTrace (); } ThreadList.Add (Thread); } // Obtener estado de hilo para (Thread t: ThreadList) {if (t.getState (). ToString (). Equals ("terminado")) {ThreadStatUscode += 1; }} // Determine si todos los hilos se han ejecutado si (ThreadStatUscode == 12) {// Recibe parámetros // List <Map <String, Object >> List = readLogFilethread.list.sublist (0, 12); List <map <string, object >> list = readLogFilethreadbyyear.list; // Establecer parámetros para (int p = 0; p <list.size (); p ++) {count+= (int) list.get (p) .get ("clickCount"); if (list.get (p) .get ("mes"). Equals ("01")) {ylist.add ((integer) list.get (p) .get ("clickCount")); } else if (list.get (p) .get ("mes"). Equals ("02")) {ylist.add ((integer) list.get (p) .get ("clickCount")); } else if (list.get (p) .get ("mes"). Equals ("03")) {ylist.add ((integer) list.get (p) .get ("clickCount")); } else if (list.get (p) .get ("mes"). Equals ("04")) {ylist.add ((integer) list.get (p) .get ("clickCount")); } else if (list.get (p) .get ("mes"). Equals ("05")) {ylist.add ((integer) list.get (p) .get ("clickCount")); } else if (list.get (p) .get ("mes"). Equals ("06")) {ylist.add ((integer) list.get (p) .get ("clickCount")); } else if (list.get (p) .get (p) .get ("mes"). equals ("07")) {ylist.add ((integer) list.get (p) .get ("clickCount")); } else if (list.get (p) .get ("mes"). Equals ("08")) {ylist.add ((integer) list.get (p) .get ("clickCount")); } else if (list.get (p) .get ("mes"). Equals ("09")) {ylist.add ((integer) list.get (p) .get ("clickCount")); } else if (list.get (p) .get ("mes"). Equals ("10")) {ylist.add ((integer) list.get (p) .get ("clickCount")); } else if (list.get (p) .get ("mes"). Equals ("11")) {ylist.add ((integer) list.get (p) .get ("clickCount")); } else if (list.get (p) .get ("mes"). Equals ("12")) {ylist.add ((integer) list.get (p) .get ("clickCount")); }}} setAttr ("TotalCount", Count); setattr ("x", xlist); setattr ("y", ylist); renderjson (); }Método de subproceso:
paquete 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.araylist; java.util.map; import com.ninemax.util.loganalysis.tool.constantutil;/** * multithreading no tiene valor de retorno * * @author darker * */public class readLogfilethreadbyyear extiende el hilo {// Lista privada de la matriz de fecha <String> ClickDate; // Datos compartidos Lista estática pública <map <string, object >> list = new ArrayList <map <string, object >> (); Public ReadLogFilethreadByYear (List <String> ClickDate) {this.ClickDate = ClickDate; } / ** * Lea el archivo de registro de clic * * Ejemplo: Artículo.Click.2016-05-20.txt * * @return * / public void run () {// Recibe parámetros Map <String, Object> Map = New Hashmap <String, Object> (); // Use FileInputStream para leer la información del archivo FileInputStream Fis = null; // use InputStreamReader para transcodificar InputStreamReader Reader = null; // Use BufferedReader para Buffer BufferedReader bufReader = null; // use StringBuffer para recibir contenido del contenido del archivo StringBuffer buf = new StringBuffer (); // clics/mes int mesClick = 0; for (int i = 0; i <clickdate.size (); i ++) {// Obtener archivo Archivo ClickLogFile = new File (constantUtil.logLocation, "Artículo.Click."+ ClickDate.get (i)+ ".txt"); // Determinar si el archivo existe si (! ClicklogFile.exists () || clicklogFile.isDirectory ()) {system.err.println (clickDate.get (i) + "El archivo no existe ..."); } else {try {// nodo stream fis = new FileInputStream (ClickLogFile); // Convertir Stream Reader = new InputStreamReader (FIS, "UTF-8"); // Process stream bufReader = new BufferedReader (lector); // contador int count = 0; // Leer String Line = ""; // Leer archivo while ((line = bufReader.readline ())! = NULL) {count ++; // Recibe datos if (! Line.equals (null) &&! Line.equals ("")) {buf.append (line + "/n"); }} if (count == 0) {count = 0; } else {Count = Count - 1; } mesClick += Count; } catch (Exception e) {E.PrintStackTrace (); } Finalmente {// Cerrar la secuencia try {bufReader.close (); lector.close (); fis.close (); } catch (ioException e) {E.PrintStackTrace (); }}}} map.put ("mes", clickdate.get (0) .subSequence (5, 7)); if (mesclick == 0) {map.put ("clickCount", 0); } else {map.put ("clickCount", mesclick); } // map.put ("ClickContent", buf.ToString ()); list.add (mapa); }} 1 Página de 2Next Lea el texto completo