addthread.java

  1. /**
  2.  * Title:        加入線程
  3.  * Description:
  4.  * @date :       2006-3-3
  5.  * @author :     zhanglei
  6.  * @version :    1.0
  7.  */
  8. package server;
  9. import java.io.*;
  10. import java.util.*;
  11. import java.sql.*;
  12. /**
  13.  *RecvThread  交換信息接收XML文件服務線程
  14.  *@param1     線程啓動時間
  15.  *@param2     監控文件路徑
  16.  */
  17. class RecvThread
  18.     implements Runnable {
  19.     private DomXML DomXML = MainServer.DomXML;
  20.     static int sumFile = 0//處理文件合計數
  21.     private int threadTime = 0//線程延時時間
  22.     private findfile FindFile = null;
  23.     private int execFlag = 0//執行SQL語句結果標識
  24.     private File doFile = null//備份移動後進行處理的文件
  25.     private File errorFile = null//異常XML文件移動
  26.     private String filename = "";
  27.     private String pathname = "";
  28.     private StringBuffer log = new StringBuffer();
  29.     private JdbcWork RkJw = new JdbcWork();
  30. //    private int xmlListFlag = 0; //接收XML的list文件處理標識 0 未處理 1 處理成功 -1 處理失敗
  31.     private String threadNo = ""//線程號
  32.     private ListXML listXml = null;
  33.     public RecvThread(String ThreadNo) {
  34.         threadNo = ThreadNo;
  35.         DomXML.GetBeginItem("receive");
  36.         this.threadTime = GetThreadtime(DomXML.GetItemAttribute(threadNo, "threadtime").trim());
  37.         this.pathname = DomXML.GetItemAttribute(threadNo, "path").trim();
  38.         FindFile = new findfile(pathname);
  39.         listXml = new ListXML();
  40.         RkJw.ConnectDB();
  41.     }
  42.     //執行線程體
  43.     public void run() {
  44.         System.out.println("run");
  45.     }
  46.     //獲得線程時間
  47.     public static int GetThreadtime(String timeStr) {
  48.         int threadtime = 1000;
  49.         if (MyFunction.IsNumber(timeStr)) {
  50.             threadtime = Integer.parseInt(timeStr);
  51.         }
  52.         return threadtime;
  53.     }
  54.     public static void main(String args[]) {
  55.         //讀入檢驗XML配置到內存
  56.         try {
  57.             DomXML configXml = new DomXML("config.xml");
  58.             System.out.println("XML配置文件讀取成功!");
  59.         }
  60.         catch (Throwable t) {
  61.             System.out.println("檢驗XML配置文件讀取錯誤!");
  62.         }
  63.         Thread RecvThread = new Thread(new RecvThread("no1"));
  64.         RecvThread.start();
  65.         /*      //建立Jdbc數據庫連接
  66.                         JdbcWork JW = new JdbcWork();
  67.                         if(JW.ConnectDB() == null) {
  68.                                 System.out.println("數據庫連接失敗!");
  69.                                 System.exit(1);
  70.                         }
  71.          */
  72.         //戶籍變動處理,執行rk_change_people()
  73. //        Thread TestThread = new Thread(new TestThread(1, ""));
  74. //        TestThread.start();
  75.     }
  76. }
  77. /*
  78.  /**
  79.   *ExecSqlThread  戶籍變動處理,執行sql語句線程
  80.   *@param1     線程啓動時間
  81.   *@param2     執行的SQL語句
  82.   */
  83. class ExecSqlThread
  84.     implements Runnable {
  85.     private DomXML DomXML = MainServer.DomXML;
  86.     private String threadNo = null;
  87.     private int threadTime = 0//線程延時時間
  88.     private String sqlStr = null;
  89.     private JdbcWork EsJw = new JdbcWork();
  90.     public ExecSqlThread(String ThreadNo) {
  91.         threadNo = ThreadNo;
  92.         DomXML.GetBeginItem("execproc");
  93.         this.threadTime = RecvThread.GetThreadtime(DomXML.GetItemAttribute(threadNo, "threadtime").trim());
  94.         this.sqlStr = DomXML.GetItemAttribute(threadNo, "procname").trim();
  95.         EsJw.ConnectDB();
  96.     }
  97.     public void run() {
  98.         while (true) {
  99.             try {
  100.                 EsJw.PstmtExecSql(sqlStr);
  101.                 EsJw.PstmtCommit();
  102.                 Thread.sleep(threadTime);
  103.             }
  104.             catch (Exception e) {
  105.                 SaveLog.SetInfo(sqlStr + "進程執行異常:" + e, 2);
  106.             }
  107.         }
  108.     }
  109. }
  110. /**
  111.  *TabHkThread  戶籍變動處理,執行sql語句線程
  112.  *@param1     線程啓動時間
  113.  *@param2     執行的SQL語句
  114.  */
  115. class GetXmlThread
  116.     implements Runnable {
  117.     private DomXML DomXML = MainServer.DomXML;
  118.     private String threadNo = null;
  119.     private int threadTime; //線程延時時間
  120.     private String xmlno;
  121.     public GetXmlThread(String ThreadNo) {
  122.         threadNo = ThreadNo;
  123.         DomXML.GetBeginItem("GetXmlFile");
  124.         this.threadTime = RecvThread.GetThreadtime(DomXML.GetItemAttribute(threadNo, "threadtime").trim());
  125.         this.xmlno = ThreadNo; //DomXML.GetItemAttribute(threadNo, "xmltype").trim();
  126.     }
  127.     public void run() {
  128.         while (true) {
  129.             try {
  130.                 GetXmlFile getXmlFile = new GetXmlFile(xmlno);
  131.                 getXmlFile.Start();
  132.                 Thread.sleep(threadTime);
  133.             }
  134.             catch (Exception e) {
  135.                 SaveLog.SetInfo(xmlno + "生成XML文件異常:" + e, 2);
  136.             }
  137.         }
  138.     }
  139. }
  140. /**
  141.  *MyAddThread   自增加線程
  142.  *@ThreadNo     線程啓動序號
  143.  */
  144. class MyAddThread
  145.     implements Runnable {
  146.     private DomXML DomXML = MainServer.DomXML;
  147.     private String threadNo = null;
  148.     private int threadTime; //線程延時時間
  149.     private String xmltype;
  150.     public MyAddThread(String ThreadNo) {
  151.         threadNo = ThreadNo;
  152.         DomXML.GetBeginItem("MyAddThread");
  153.         this.threadTime = RecvThread.GetThreadtime(DomXML.GetItemAttribute(threadNo, "threadtime").trim());
  154.     }
  155.     public void run() {
  156.         while (true) {
  157.             try {
  158.                 new MyThreadClass();
  159.                 Thread.sleep(threadTime);
  160.             }
  161.             catch (Exception e) {
  162.                 SaveLog.SetInfo(xmltype + "MyAddThread線程異常:" + e, 2);
  163.             }
  164.         }
  165.     }
  166. }
  167. //調試檢測運行進程數量
  168. class Probe
  169.     extends Thread {
  170.     public Probe() {}
  171.     public void run() {
  172.         while (true) {
  173.             Thread[] x = new Thread[100];
  174.             Thread.enumerate(x);
  175.             for (int i = 0; i < 100; i++) {
  176.                 Thread t = x[i];
  177.                 if (t == null) {
  178.                     break;
  179.                 }
  180.                 else {
  181.                     System.out.println(t.getName() + "/t" + t.getPriority()
  182.                                        + "/t" + t.isAlive() + "/t" + t.isDaemon());
  183.                 }
  184.             }
  185.         }
  186.     }
  187. }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章