Java多線程實例
在上篇文章給大家介紹了java多線程的實現(xiàn)方式,通過本文給大家介紹java多線程實例,對java多線程感興趣的朋友一起學(xué)習(xí)吧
首先給大家說下多線程的優(yōu)缺點
多線程的優(yōu)點:
1)資源利用率更好
2)程序設(shè)計在某些情況下更簡單
3)程序響應(yīng)更快
多線程的代價:
1)設(shè)計更復(fù)雜
雖然有一些多線程應(yīng)用程序比單線程的應(yīng)用程序要簡單,但其他的一般都更復(fù)雜。在多線程訪問共享數(shù)據(jù)的時候,這部分代碼需要特別的注意。線程之間的交互往往非常復(fù)雜。不正確的線程同步產(chǎn)生的錯誤非常難以被發(fā)現(xiàn),并且重現(xiàn)以修復(fù)。
2)上下文切換的開銷
當(dāng)CPU從執(zhí)行一個線程切換到執(zhí)行另外一個線程的時候,它需要先存儲當(dāng)前線程的本地的數(shù)據(jù),程序指針等,然后載入另一個線程的本地數(shù)據(jù),程序指針等,最后才開始執(zhí)行。這種切換稱為“上下文切換”(“context switch”)。CPU會在一個上下文中執(zhí)行一個線程,然后切換到另外一個上下文中執(zhí)行另外一個線程。上下文切換并不廉價。如果沒有必要,應(yīng)該減少上下文切換的發(fā)生。
定義和啟動線程主要有兩個關(guān)鍵技術(shù):
第一:線程類必須實現(xiàn)java.lang.Runnable接口或者繼承java.lang.Thread類,并且都要實現(xiàn)run方法,其中run方法沒有輸入,沒有輸出,也無異常。
第二:調(diào)用Thread類的start方法啟動線程,當(dāng)獲得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();
}
}
相關(guān)文章
Gradle環(huán)境下導(dǎo)出Swagger為PDF的步驟詳解
這篇文章主要介紹了Gradle環(huán)境下導(dǎo)出Swagger為PDF的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06
Spring Boot 應(yīng)用程序中配置使用consul的方法
配置是 Spring Boot 應(yīng)用程序中的一部分,主要用于配置服務(wù)端口、應(yīng)用名稱、Consul 服務(wù)發(fā)現(xiàn)以及健康檢查等功能,下面給大家介紹Spring Boot 應(yīng)用程序中配置使用consul,感興趣的朋友一起看看吧2025-04-04
spring boot aop 記錄方法執(zhí)行時間代碼示例
這篇文章主要介紹了spring boot aop 記錄方法執(zhí)行時間代碼示例,分享了相關(guān)代碼,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下2018-02-02
新手學(xué)習(xí)JQuery基本操作和使用案例解析
這篇文章主要介紹了新手學(xué)習(xí)JQuery基本操作和使用案例解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-02-02

