欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java多線程實(shí)例

 更新時(shí)間:2015年11月11日 11:56:00   投稿:mrr  
本文給大家介紹java多線程實(shí)例,對java多線程知識感興趣的朋友參考下吧

在上篇文章給大家介紹了java多線程的實(shí)現(xiàn)方式,通過本文給大家介紹java多線程實(shí)例,對java多線程感興趣的朋友一起學(xué)習(xí)吧

首先給大家說下多線程的優(yōu)缺點(diǎn)

多線程的優(yōu)點(diǎn):

1)資源利用率更好
2)程序設(shè)計(jì)在某些情況下更簡單
3)程序響應(yīng)更快

多線程的代價(jià):

1)設(shè)計(jì)更復(fù)雜

雖然有一些多線程應(yīng)用程序比單線程的應(yīng)用程序要簡單,但其他的一般都更復(fù)雜。在多線程訪問共享數(shù)據(jù)的時(shí)候,這部分代碼需要特別的注意。線程之間的交互往往非常復(fù)雜。不正確的線程同步產(chǎn)生的錯(cuò)誤非常難以被發(fā)現(xiàn),并且重現(xiàn)以修復(fù)。

2)上下文切換的開銷

當(dāng)CPU從執(zhí)行一個(gè)線程切換到執(zhí)行另外一個(gè)線程的時(shí)候,它需要先存儲(chǔ)當(dāng)前線程的本地的數(shù)據(jù),程序指針等,然后載入另一個(gè)線程的本地?cái)?shù)據(jù),程序指針等,最后才開始執(zhí)行。這種切換稱為“上下文切換”(“context switch”)。CPU會(huì)在一個(gè)上下文中執(zhí)行一個(gè)線程,然后切換到另外一個(gè)上下文中執(zhí)行另外一個(gè)線程。上下文切換并不廉價(jià)。如果沒有必要,應(yīng)該減少上下文切換的發(fā)生。

定義和啟動(dòng)線程主要有兩個(gè)關(guān)鍵技術(shù):

第一:線程類必須實(shí)現(xiàn)java.lang.Runnable接口或者繼承java.lang.Thread類,并且都要實(shí)現(xiàn)run方法,其中run方法沒有輸入,沒有輸出,也無異常。

第二:調(diào)用Thread類的start方法啟動(dòng)線程,當(dāng)獲得cpu資源后,start方法自動(dòng)調(diào)用線程run方法開始運(yùn)行。

package test;
import java.util.Vector;
import java.util.Date;
/**
 * 線程測試實(shí)例
 * @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)文章

最新評論