Java多線程實例
在上篇文章給大家介紹了java多線程的實現(xiàn)方式,通過本文給大家介紹java多線程實例,對java多線程感興趣的朋友一起學習吧
首先給大家說下多線程的優(yōu)缺點
多線程的優(yōu)點:
1)資源利用率更好
2)程序設計在某些情況下更簡單
3)程序響應更快
多線程的代價:
1)設計更復雜
雖然有一些多線程應用程序比單線程的應用程序要簡單,但其他的一般都更復雜。在多線程訪問共享數(shù)據(jù)的時候,這部分代碼需要特別的注意。線程之間的交互往往非常復雜。不正確的線程同步產(chǎn)生的錯誤非常難以被發(fā)現(xiàn),并且重現(xiàn)以修復。
2)上下文切換的開銷
當CPU從執(zhí)行一個線程切換到執(zhí)行另外一個線程的時候,它需要先存儲當前線程的本地的數(shù)據(jù),程序指針等,然后載入另一個線程的本地數(shù)據(jù),程序指針等,最后才開始執(zhí)行。這種切換稱為“上下文切換”(“context switch”)。CPU會在一個上下文中執(zhí)行一個線程,然后切換到另外一個上下文中執(zhí)行另外一個線程。上下文切換并不廉價。如果沒有必要,應該減少上下文切換的發(fā)生。
定義和啟動線程主要有兩個關鍵技術:
第一:線程類必須實現(xiàn)java.lang.Runnable接口或者繼承java.lang.Thread類,并且都要實現(xiàn)run方法,其中run方法沒有輸入,沒有輸出,也無異常。
第二:調(diào)用Thread類的start方法啟動線程,當獲得cpu資源后,start方法自動調(diào)用線程run方法開始運行。
package test; import java.util.Vector; import java.util.Date; /** * 線程測試實例 * @author 靜止的流水 * */ public class Threadnew { /** * * @author 靜止的流水 * */ class ThreadA extends Thread { private Date runtime; public void run() { System.out.println("ThreadA begin."); this.runtime = new Date(); System.out.println("ThreadA end."); } } /** * * @author 靜止的流水 * */ class ThreadB implements Runnable { private Date runtime; public void run() { System.out.println("ThreadB begin."); this.runtime = new Date(); System.out.println("ThreadB end."); } } /** * * */ public void starta() { Thread threada = new ThreadA(); threada.start(); } /** * * */ public void startb() { Runnable threadb = new ThreadB(); Thread thread = new Thread(threadb); thread.start(); } /** * * @param args */ public static void main(String[] args) { Threadnew test = new Threadnew(); test.starta(); test.startb(); } }
相關文章
詳解SpringBoot中Controller接收對象列表實現(xiàn)
這篇文章主要介紹了詳解SpringBoot中Controller接收對象列表實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-05-05redis實現(xiàn)多進程數(shù)據(jù)同步工具代碼分享
這篇文章主要介紹了使用redis實現(xiàn)多進程數(shù)據(jù)同步工具的代碼,大家參考使用吧2014-01-01java中加密的實現(xiàn)方法(MD5,MD2,SHA)
這篇文章主要介紹了java中加密的實現(xiàn)方法(MD5,MD2,SHA)的相關資料,這里提供三種實現(xiàn)加密的方法,大家可以對比一下,需要的朋友可以參考下2017-08-08在MyBatis中使用 # 和 $ 書寫占位符的區(qū)別說明
這篇文章主要介紹了在MyBatis中使用 # 和 $ 書寫占位符的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10SpringBoot 開發(fā)提速神器 Lombok+MybatisPlus+SwaggerUI
這篇文章主要介紹了SpringBoot 開發(fā)提速神器 Lombok+MybatisPlus+SwaggerUI,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03