多線程(一)~基礎介紹,簡單demo實現


 
    前言:
    現在CPU都是多核的,可以同時處理多個進程,比如我筆記本的CPU是i3-370,它就是雙核四線程的。那么這個核和線程都是什么呢?
     核是針對硬件而言的,即核心,代表的是有多少個核心芯片。
     線程是處理程序的基本單位,說到線程就要先介紹一下進程。舉個例子吧:比如我的windows系統,需要同時開啟QQ、eclipse等應用程序。QQ和eclipse在 任務管理器中就有自己的進程,而每一個進程又包含多個線程,有的線程處理消息接收、有的線程處理語音視頻等等。
 
    用途:
    比如我的程序同時要執行兩個任務,如果單線程執行的話,效果是:
 
    
    如果多線程執行的話,效果是:
 
 
    由此可見,多線程處理任務的能力更強一些,也更節約時間。
    OK,接下來我們看一下java中多線程的實現方式。
 
多線程入門:
    在java中實現多線程的方式有以下兩種:
         1.繼承java.lang.Thread類,實現run()即可。
         2.實現java.lang.Runnable接口,實現run()即可。注意:這塊涉及到一個基礎問題,java只支持單繼承,所以還是采用實現接口比較好。
    
    ①.繼承java.lang.Thread類
  1. package com.multiThread.bean;
  2. publicclassMyThreadClassextendsThread{
  3. @Override
  4. publicvoid run(){
  5. System.out.println("繼承java.lang.Thread類");
  6. }
  7. }
    ②.實現java.lang.Runnable接口
  1. package com.multiThread.bean;
  2. publicclassMyRunnableClassimplementsRunnable{
  3. @Override
  4. publicvoid run(){
  5. System.out.println("實現java.lang.Runnable接口");
  6. }
  7. }
    ③.測試類
  1. package com.multiThread.test.common;
  2. import com.multiThread.bean.MyRunnableClass;
  3. import com.multiThread.bean.MyThreadClass;
  4. publicclassTest{
  5. publicstaticvoid main(String[] args){
  6. //繼承java.lang.Thread類
  7. Thread thread1 =newMyThreadClass();
  8.         //告知線程規划器,此線程可以執行了
  9. thread1.start();
  10. //實現java.lang.Runnable接口
  11. MyRunnableClass myRunnableClass =newMyRunnableClass();
  12. //創建Thread對象,傳入Runnable接口的實現類對象
  13.         Thread thread2 =newThread(myRunnableClass);
  14.         //告知線程規划器,此線程可以執行了
  15. thread2.start();
  16. }
  17. }
     輸出日志
  1. 繼承java.lang.Thread
  2. 實現java.lang.Runnable接口
 
 
這里注意thread對象除了有start()之外,還有run(),這個地方必須調用start(),這兩個方法的區別是:
    run():使用main線程同步執行線程的操作
    start():通知線程規划器此線程准備就緒可以執行,具體什么時間執行需要等cpu調度
 
OK,簡簡單單介紹下來源、用途,寫個小demo,第一章就這樣告一段落吧。
到這里我們只看到了多線程的冰山一角,后面還有需需要多大的事情要處理,比如控制線程安全問題,不能出現臟讀;保證程序設計的嚴密性,避免死鎖的出現……我們循序漸進吧
下一章我們來看一下線程安全的問題以及對java.lang包下Thread類相關API的操作
 
    






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM