java多線程1

進(jìn)程

程序(任務(wù)的執(zhí)行過程)--- 動態(tài)

持有資源(共享內(nèi)存、共享文件)和線程 ---載體

線程

線程是系統(tǒng)中最小的執(zhí)行單元,同一個進(jìn)程中有多個線程,線程共享進(jìn)程的資源

線程的交互:同步 ? 互斥

=======================================

Java語言對線程的支持

java.lang ? class ?Thread ? ?和 interface Runnable

public void run()

Thread常用方法

線程的創(chuàng)建

Thread()

Thread(String name)

Thread(Runnable target)

Thread(Runnable target,String name)

線程的方法

啟動線程

void start() ?

線程休眠

static void sleep(long millis) ? ? ? ?

static void sleep(long millis, int nanos)

使其他線程等待當(dāng)前線程終止

void join()

void join(long millis)

void join(long millis,int nanos)

當(dāng)前運行線程釋放處理器資源

static void yield()

獲取線程引用:

返回當(dāng)前運行的線程引用 ? static Thread currentThread()

=====================================================

正確停止JAVA 中的線程 ? ? ??

錯誤的方法 ?stop方法

正確的方法 ?使用退出標(biāo)志

volatile boolean keepRunning = true;

@Override

public void run() {

while (keepRunning) {

// 發(fā)動5連擊

for (int i = 0; i < 5; i++) {

System.out.println(Thread.currentThread().getName() + "進(jìn)攻對方[" + i + "]");

// 讓出了處理器時間,下次該誰進(jìn)攻還不一定呢!

Thread.yield();

}

}

廣為流傳的錯誤方法 ?interrupt()

interrupt()方法初衷并不是用于停止線程


=====================================================

線程交替運行實例

public class Actor extends Thread {

public void run() {

System.out.println(getName() + "是一個演員!");

int count = 0;

boolean keepRunning = true;

while (keepRunning) {

System.out.println(getName() + "登臺演出:" + (++count));

if (count == 100) {

keepRunning = false;

}

if (count % 10 == 0) {

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

System.out.println(getName() + "的演出結(jié)束了");

}

public static void main(String[] args) {

Thread actor = new Actor();

actor.setName("Mr.Thread");

actor.start();

Thread actressThread = new Thread(new Actress(),"Ms.Runnable");

actressThread.start();

}

}

class Actress implements Runnable {

@Override

public void run() {

System.out.println(Thread.currentThread().getName() + "是一個演員!");

int count = 0;

boolean keepRunning = true;

while (keepRunning) {

System.out.println(Thread.currentThread().getName() + "登臺演出:" + (++count));

if (count == 30) {

keepRunning = false;

}

if (count % 10 == 0) {

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

System.out.println(Thread.currentThread().getName() + "的演出結(jié)束了");

}

}

運行結(jié)果:

Mr.Thread是一個演員!

Mr.Thread登臺演出:1

Mr.Thread登臺演出:2

Mr.Thread登臺演出:3

Mr.Thread登臺演出:4

Mr.Thread登臺演出:5

Mr.Thread登臺演出:6

Mr.Thread登臺演出:7

Mr.Thread登臺演出:8

Mr.Thread登臺演出:9

Mr.Thread登臺演出:10

Ms.Runnable是一個演員!

Ms.Runnable登臺演出:1

Ms.Runnable登臺演出:2

Ms.Runnable登臺演出:3

Ms.Runnable登臺演出:4

Ms.Runnable登臺演出:5

Ms.Runnable登臺演出:6

Ms.Runnable登臺演出:7

Ms.Runnable登臺演出:8

Ms.Runnable登臺演出:9

Ms.Runnable登臺演出:10

Mr.Thread登臺演出:11

Mr.Thread登臺演出:12

Mr.Thread登臺演出:13

Mr.Thread登臺演出:14

Mr.Thread登臺演出:15

Mr.Thread登臺演出:16

Mr.Thread登臺演出:17

Mr.Thread登臺演出:18

Mr.Thread登臺演出:19

Mr.Thread登臺演出:20

Ms.Runnable登臺演出:11

Ms.Runnable登臺演出:12

Ms.Runnable登臺演出:13

Ms.Runnable登臺演出:14

Ms.Runnable登臺演出:15

Ms.Runnable登臺演出:16

Ms.Runnable登臺演出:17

Ms.Runnable登臺演出:18

Ms.Runnable登臺演出:19

Ms.Runnable登臺演出:20

Mr.Thread登臺演出:21

Mr.Thread登臺演出:22

Mr.Thread登臺演出:23

Mr.Thread登臺演出:24

Mr.Thread登臺演出:25

Mr.Thread登臺演出:26

Mr.Thread登臺演出:27

Mr.Thread登臺演出:28

Mr.Thread登臺演出:29

Mr.Thread登臺演出:30

Ms.Runnable登臺演出:21

Ms.Runnable登臺演出:22

Ms.Runnable登臺演出:23

Ms.Runnable登臺演出:24

Ms.Runnable登臺演出:25

Ms.Runnable登臺演出:26

Ms.Runnable登臺演出:27

Ms.Runnable登臺演出:28

Ms.Runnable登臺演出:29

Ms.Runnable登臺演出:30

Mr.Thread的演出結(jié)束了

Ms.Runnable的演出結(jié)束了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.什么是進(jìn)程? 進(jìn)程是操作系統(tǒng)結(jié)構(gòu)的基礎(chǔ),是一次程序的執(zhí)行,是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個獨立單位。這個解釋有點...
    RonaldoWang閱讀 526評論 0 4
  • 線程 線程是程序執(zhí)行流的最小單位,在傳統(tǒng)的開發(fā)中一個程序僅僅擁有一個線程,通俗的講,單線程程序就是一根腸子通屁眼,...
    rockjh閱讀 320評論 0 0
  • 本文主要講了java中多線程的使用方法、線程同步、線程數(shù)據(jù)傳遞、線程狀態(tài)及相應(yīng)的一些線程函數(shù)用法、概述等。 首先講...
    李欣陽閱讀 2,597評論 1 15
  • 該文章轉(zhuǎn)自:http://blog.csdn.net/evankaka/article/details/44153...
    加來依藍(lán)閱讀 7,470評論 3 87
  • 昨天剛說完標(biāo)題欄的這句話,今天便應(yīng)驗了,應(yīng)驗的是后半句。 今天是2016年11月1日,正式恢復(fù)因為出差中斷了一個多...
    橙子大大閱讀 283評論 3 2

友情鏈接更多精彩內(nèi)容