Méthode d'appel:
/ ** * Numéro de clics / mois (année) Thread * / public void annelyClickThread () {// Get Paramètres String Year = getPara ("Year"); // Statistics Data Set x list <string> xlist = new ArrayList <string> (); xList.add ("janvier"); xlist.add ("février"); xList.add ("mars"); xlist.add ("avril"); xList.add ("May"); xlist.add ("juin"); xList.add ("juillet"); xList.add ("juillet"); xlist.add ("août"); xlist.add ("septembre"); xlist.add ("octobre"); xlist.add ("novembre"); xlist.add ("décembre"); // Statistics DataSet y List <Integer> ylist = new ArrayList <Integer> (); // Statistique Statut Status List <Bread> ThreadList = new ArrayList <read> (); // Code d'état du thread int threadStaturcode = 0; // compteur int count = 0; // Analyse du journal mensuel pour (int m = 1; m <= 12; m ++) {// Collection des paramètres de date Liste <string> dateList = new ArrayList <string> (); // String Date = ""; // déterminer combien de jours int jours = calendarutil.weekformonth (Integer.valueof (année), m); // Date de combinaison pour (int i = 1; i <= jours; i ++) {if (i <= 9) {if (m <= 9) {date = an + "-0" + m + "-0" + i; } else {date = an + "-" + m + "-0" + i; }} else {if (m <= 9) {date = an + "-0" + m + "-" + i; } else {date = an + "-" + m + "-" + i; }} datelist.add (date); } // Démarrer le thread thread thread = new ReadLogFileThreadByyear (dateList); thread.start (); essayez {// hibernate thread.sleep (1000l); } catch (InterruptedException e) {e.printStackTrace (); } threadList.add (thread); } // Obtenez l'état du thread pour (thread t: ThreadList) {if (t.getState (). ToString (). Equals ("terminé")) {ThreadStaturcode + = 1; }} // Déterminez si tous les threads ont été exécutés if (ThreadStaturcode == 12) {// Recevoir Paramètres // List <Map <String, Object >> list = readLogFileThread.List.Sublist (0, 12); List <map <string, object >> list = readLogFileThreadByyEar.list; // Définir les paramètres pour (int p = 0; p <list.size (); p ++) {count + = (int) list.get (p) .get ("clickCount"); if (list.get (p) .get ("mois"). equals ("01")) {yList.add ((Integer) list.get (p) .get ("clickCount")); } else if (list.get (p) .get ("mois"). equals ("02")) {ylist.add ((Integer) list.get (p) .get ("clickCount")); } else if (list.get (p) .get ("mois"). equals ("03")) {yList.add ((Integer) list.get (p) .get ("clickCount")); } else if (list.get (p) .get ("mois"). equals ("04")) {yList.add ((Integer) list.get (p) .get ("clickCount")); } else if (list.get (p) .get ("mois"). equals ("05")) {yList.add ((Integer) list.get (p) .get ("clickCount")); } else if (list.get (p) .get ("mois"). equals ("06")) {yList.add ((Integer) list.get (p) .get ("clickCount")); } else if (list.get (p) .get (p) .get ("mois"). equals ("07")) {yList.add ((Integer) list.get (p) .get ("clickCount")); } else if (list.get (p) .get ("mois"). equals ("08")) {yList.add ((Integer) list.get (p) .get ("clickCount")); } else if (list.get (p) .get ("mois"). equals ("09")) {ylist.add ((Integer) list.get (p) .get ("clickCount")); } else if (list.get (p) .get ("mois"). equals ("10")) {yList.add ((Integer) list.get (p) .get ("clickCount")); } else if (list.get (p) .get ("mois"). equals ("11")) {yList.add ((Integer) list.get (p) .get ("clickCount")); } else if (list.get (p) .get ("mois"). equals ("12")) {yList.add ((Integer) list.get (p) .get ("clickCount")); }}} setAttr ("totalCount", count); setAttr ("x", xlist); setAttr ("y", ylist); Renderjson (); }Méthode de thread:
package com.ninemax.util.loganalysis; import java.io.buffereDaDer; import java.io.file; import java.io.fileinputStream; import java.io.irayception; import java.io.inputstreamreader; import java.util.arraylist; import java.util.hashmap; import java. java.util.map; import com.ninemax.util.loganalysis.tool.constantutil; / ** * Multithreading n'a pas de valeur de retour * * @author Darker * * / public class ReadLogFileTheadByyear étend Thread {// Date Array List private <string> clickdate; // Données partagées publiques statiques Liste <map <string, objet >> list = new ArrayList <map <string, objet >> (); public readLogFileThreadByyEar (list <string> clickdate) {this.clickdate = clickdate; } / ** * Lire Cliquez sur Fichier journal * * Exemple: Article.click.2016-05-20.txt * * @return * / public void run () {// reçoit les paramètres map <string, objet> map = new hashmap <String, objet> (); // Utilisez FileInputStream pour lire les informations de fichier FileInputStream fis = null; // Utilisez InputStreamReader pour transcoder InputStreamReader Reader = NULL; // Utilisez BufferedReader pour tamponner BufferedReader Bufreader = NULL; // Utilisez StringBuffer pour recevoir le contenu de contenu StringBuffer Buf = new StringBuffer (); // Clicks / Mois int moisclick = 0; for (int i = 0; i <clickdate.size (); i ++) {// get file file clicklogfile = new File (constantUtil.loglocation, "article.click." + clickdate.get (i) + ".txt"); // Déterminez si le fichier existe si (! Clicklogfile.exists () || clicklogfile.isdirectory ()) {System.err.println (clickdate.get (i) + "Le fichier n'existe pas ..."); } else {try {// Node Stream fis = new FileInputStream (clicklogfile); // convertit Stream Reader = new InputStreamReader (FIS, "UTF-8"); // Process Stream BuFreader = new BuffereDReader (Reader); // compteur int count = 0; // Lire String line = ""; // Lire le fichier while ((line = bufReader.readline ())! = Null) {count ++; // reçoit des données if (! Line.equals (null) &&! Line.equals ("")) {buf.append (line + "/ n"); }} if (count == 0) {count = 0; } else {count = count - 1; } Moisclick + = count; } catch (exception e) {e.printStackTrace (); } Enfin {// Fermez le flux try {bufReader.close (); Reader.Close (); fis.close (); } catch (ioException e) {e.printStackTrace (); }}}} map.put ("mois", clickdate.get (0) .SubSequence (5, 7)); if (MonthClick == 0) {map.put ("clickCount", 0); } else {map.put ("ClickCount", MoisClick); } // map.put ("clickContent", buf.toString ()); list.add (map); }} 1 page 2Next Lire le texte intégral