熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java高級技術 >> 正文

Java多線程編程三步曲[2]

2013-11-23 19:56:00  來源: Java高級技術 

    萬一你要做的不是一個簡單的重復作業javalangThread類就派上了用場它允許你自己控制基本功能通過創建Thread的一個子類你可以使你的系統脫離並進行一個長時間運行的作業如從網絡上讀取一個文件而不阻礙你的其它程序的運行這種長時間運行的作業將在run方法中定義
    
    第二種方式是創建Thread類的子類並在子類中實現run方法或在實現runnable的類中實現run方法並將這個實現傳遞給Thread的構造函數
    
    你可能會問有什麼區別Java編程語言僅支持單一繼承如果你設計的調用是除了Thread以外的其它類你可以是你的類實現Runnable而它可以是你的作業被執行否則你定義Thread的子類來運行你的Run方法在處理過程中不再添加其它操作
    
    對於創建Thread子類的第三種情況下面的程序生成了一個新的線程來計算一個特定URL的字符數這個URL是通過命令行傳遞進來的在這進行過程之中實現Runnable的第四種情況被演示打印出重復的消息
    
    注意在實現Runnable的這後一種情況下你必須提供重復消息的代碼你必須同時sleep以分配時間並完成操作在兩種情況下與使用Timer相比較這段程序的最後一部分包含有你從命令行讀取命令以觸發程序結束注意在系統讀取URL並打印消息的同時你總可以按Enter鍵結束程序
    
    import javaio*;
    import javanet*;    
    public class Both
        {
            public static void
            main(String args[])
        }
    final String urlString = args[];
    final String message = args[];
    Thread thread = new Thread()
        {
            public void run()
                {
                    try
                           {
                               URL url = new URL(urlString);
                                URLConnection connection = urlopenConnection();
                               InputStreamReader isr = new InputStreamReaderconnectiongetInputStream());
                               BufferedReader reader = new BufferedReader(isr);
                               int count = ;
                               while (readerread() != )
                                  {
                                      count++;
                                   }
                               Systemoutprintln(Size is : + count);
                               readerclose();
                            }
                     catch (MalformedURLException e)
                         {Systemerrprintln(Bad URL: + urlString);}
                     catch (IOException e)
                         {Systemerrprintln(I/O Problems);}
                }
             threadstart();
             Runnable runnable = new Runnable()
                 {
                     public void run()
                         {
                             while(true)
                                 {
                                     Systemoutprintln(message);
                                     try
                                         {
                                             Threadsleep();
                                         } catch (InterruptedException e) {}
                                 }
                         }
                 }
        };
    Thread thread = new Thread(runnable);
    threadstart();
    try {
             Systemoutprintln
             (Press ENTER to stop);
             Systeminread(new byte[]);
         }
    catch (IOException e) {Systemoutprintln(I/O problems);}
    Systemexit();
        
    因為有多種方式來處理線程你選用哪種技術取決於你和你面臨的條件要成為一個有效的Java編程人員盡管你通常不必學習Java編程語言的所有內容和核心庫但是線程是一個例外你越早了解線程如何工作和如何使用線程你將越早了解Java程序如何工作和交互

[]  []  


From:http://tw.wingwit.com/Article/program/Java/gj/201311/27685.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.