SlideShare a Scribd company logo
1 of 20
單元7
多重執行緒
多重執行緒
• •
•
執行緒基本觀念
• 主執行緒 main thread
• 多重程序 multi-process
• 多重執行緒 multi-thread
• 營造出同時執行的感覺
code data files
registers registers registers
stack stack stack
code data files
registers stack
thread
single-threaded process Multi-theaded process
執行緒扮演的角色
• 時鐘類別
• 讀取或寫出檔案系統
• 發射子彈
• 存取網路資料
ROLE
建立方式 Thread
• extends Thread
• Override public void run () {}
• Thread 物件實體呼叫 start ()
• 啟動 run () {} 的生命週期
實際演練操作
多重執行緒生命週期
建立方式 Runnable
• implements Runnable
• public void run () {}
• Thread obj = newThread (Runnable物件)
• 啟動 Thread 物件實體的 start ()
• Runnable 物件實體並非 is-a Thread
實際演練操作
啟動執行緒
• 呼叫 start()
• 呼叫 run() 並未有執行緒特徵
Runnable Not Runnable
Dead
New Thread
yield()
new Thread()
stop() stop()
stop(), or
run() exits
start()
結束執行緒
• 呼叫方法
► destroy()
► stop()
• run() 生命走到最後
暫停執行緒
• sleep()
• yield()
• join()
• resume()
執行緒的執行資訊
• 目前是否還活著
• 是否被插斷
• 目前狀態
• 背景執行緒
實際操作演練
資料同步基本觀念
• 實際上是執行緒物件之間輪流執行
• 資料是共同存取的目標
• 資料鎖定
• synchronized
生產者與消費者
Queue
synchronizationProducer Consumer
環形緩衝區
Producer
Consumer 1
Consumer 2
實際操作演練
週期任務的基本認識
• 固定頻率執行
• 預約設定執行
• 應用
► 時鐘
► 動態效果
週期任務常見處理方式
• java.util.Timer
• java.util.TimerTask
► public void run(){}
• 取消任務: cancel()
• 取消計時器: cancel()
週期任務與執行緒的差異
• 沒有生命週期的表現
• 時間的準確性
• 完整任務的執行
實際操作演練

More Related Content

What's hot

lua & ngx_lua 的介绍与应用
lua & ngx_lua 的介绍与应用lua & ngx_lua 的介绍与应用
lua & ngx_lua 的介绍与应用hugo
 
Node js实践
Node js实践Node js实践
Node js实践jay li
 
静态项目管理工具 - opm
静态项目管理工具 - opm静态项目管理工具 - opm
静态项目管理工具 - opmgoto100
 
Ch04 會話管理
Ch04 會話管理Ch04 會話管理
Ch04 會話管理Justin Lin
 
Azure Container Service 使用 DC / OS 管理 docker 容器
Azure Container Service 使用 DC / OS 管理 docker 容器Azure Container Service 使用 DC / OS 管理 docker 容器
Azure Container Service 使用 DC / OS 管理 docker 容器Ch Rick
 
Rethinkdb and tokudb research
Rethinkdb and tokudb research Rethinkdb and tokudb research
Rethinkdb and tokudb research mysqlops
 
Rethink db&tokudb调研测试报告
Rethink db&tokudb调研测试报告Rethink db&tokudb调研测试报告
Rethink db&tokudb调研测试报告Feng Yu
 
Rethink db&tokudb调研测试报告
Rethink db&tokudb调研测试报告Rethink db&tokudb调研测试报告
Rethink db&tokudb调研测试报告iammutex
 
Servlet & JSP 教學手冊第二版 - 第 4 章:會話管理
Servlet & JSP 教學手冊第二版 - 第 4 章:會話管理Servlet & JSP 教學手冊第二版 - 第 4 章:會話管理
Servlet & JSP 教學手冊第二版 - 第 4 章:會話管理Justin Lin
 
主库自动切换 V2.0
主库自动切换 V2.0主库自动切换 V2.0
主库自动切换 V2.0jinqing zhu
 
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例Will Huang
 
Ch03 請求與回應
Ch03 請求與回應Ch03 請求與回應
Ch03 請求與回應Justin Lin
 
scrapy+sphinx搭建搜索引擎
scrapy+sphinx搭建搜索引擎scrapy+sphinx搭建搜索引擎
scrapy+sphinx搭建搜索引擎Ping Yin
 
Ch04 會話管理
Ch04 會話管理Ch04 會話管理
Ch04 會話管理Justin Lin
 
淘宝主备数据库自动切换
淘宝主备数据库自动切换淘宝主备数据库自动切换
淘宝主备数据库自动切换mysqlops
 
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器Justin Lin
 
JS单元测试之路
JS单元测试之路JS单元测试之路
JS单元测试之路Jeaf Wang
 
資料永續與交換
資料永續與交換資料永續與交換
資料永續與交換Justin Lin
 
10. 資料永續與交換
10. 資料永續與交換10. 資料永續與交換
10. 資料永續與交換Justin Lin
 
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式Justin Lin
 

What's hot (20)

lua & ngx_lua 的介绍与应用
lua & ngx_lua 的介绍与应用lua & ngx_lua 的介绍与应用
lua & ngx_lua 的介绍与应用
 
Node js实践
Node js实践Node js实践
Node js实践
 
静态项目管理工具 - opm
静态项目管理工具 - opm静态项目管理工具 - opm
静态项目管理工具 - opm
 
Ch04 會話管理
Ch04 會話管理Ch04 會話管理
Ch04 會話管理
 
Azure Container Service 使用 DC / OS 管理 docker 容器
Azure Container Service 使用 DC / OS 管理 docker 容器Azure Container Service 使用 DC / OS 管理 docker 容器
Azure Container Service 使用 DC / OS 管理 docker 容器
 
Rethinkdb and tokudb research
Rethinkdb and tokudb research Rethinkdb and tokudb research
Rethinkdb and tokudb research
 
Rethink db&tokudb调研测试报告
Rethink db&tokudb调研测试报告Rethink db&tokudb调研测试报告
Rethink db&tokudb调研测试报告
 
Rethink db&tokudb调研测试报告
Rethink db&tokudb调研测试报告Rethink db&tokudb调研测试报告
Rethink db&tokudb调研测试报告
 
Servlet & JSP 教學手冊第二版 - 第 4 章:會話管理
Servlet & JSP 教學手冊第二版 - 第 4 章:會話管理Servlet & JSP 教學手冊第二版 - 第 4 章:會話管理
Servlet & JSP 教學手冊第二版 - 第 4 章:會話管理
 
主库自动切换 V2.0
主库自动切换 V2.0主库自动切换 V2.0
主库自动切换 V2.0
 
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
 
Ch03 請求與回應
Ch03 請求與回應Ch03 請求與回應
Ch03 請求與回應
 
scrapy+sphinx搭建搜索引擎
scrapy+sphinx搭建搜索引擎scrapy+sphinx搭建搜索引擎
scrapy+sphinx搭建搜索引擎
 
Ch04 會話管理
Ch04 會話管理Ch04 會話管理
Ch04 會話管理
 
淘宝主备数据库自动切换
淘宝主备数据库自动切换淘宝主备数据库自动切换
淘宝主备数据库自动切换
 
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器
 
JS单元测试之路
JS单元测试之路JS单元测试之路
JS单元测试之路
 
資料永續與交換
資料永續與交換資料永續與交換
資料永續與交換
 
10. 資料永續與交換
10. 資料永續與交換10. 資料永續與交換
10. 資料永續與交換
 
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
 

Viewers also liked

Java_05:檔案輸出輸入機制
Java_05:檔案輸出輸入機制Java_05:檔案輸出輸入機制
Java_05:檔案輸出輸入機制Brad Chao
 
Java_06:Collection
Java_06:CollectionJava_06:Collection
Java_06:CollectionBrad Chao
 
Java Basic(1)
Java Basic(1)Java Basic(1)
Java Basic(1)Brad Chao
 
Java_03:進階物件導向觀念
Java_03:進階物件導向觀念Java_03:進階物件導向觀念
Java_03:進階物件導向觀念Brad Chao
 
第六堂 Youtube 播放 App (1)
第六堂 Youtube 播放 App (1)第六堂 Youtube 播放 App (1)
第六堂 Youtube 播放 App (1)力中 柯
 
第十一堂 學習編譯與上架
第十一堂 學習編譯與上架第十一堂 學習編譯與上架
第十一堂 學習編譯與上架力中 柯
 
Java8 time
Java8 timeJava8 time
Java8 timekoji lin
 
Java_02:初探物件導向程式設計
Java_02:初探物件導向程式設計Java_02:初探物件導向程式設計
Java_02:初探物件導向程式設計Brad Chao
 
Java 基本程式設計
Java 基本程式設計Java 基本程式設計
Java 基本程式設計Brad Chao
 
第二堂 學習 Java 語法 (1) Java 歷史與程序開發
第二堂 學習 Java 語法 (1) Java 歷史與程序開發第二堂 學習 Java 語法 (1) Java 歷史與程序開發
第二堂 學習 Java 語法 (1) Java 歷史與程序開發力中 柯
 
Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)
Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)
Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)Kuo-Chun Su
 
用JavaScript 實踐《軟體工程》的那些事兒!
用JavaScript  實踐《軟體工程》的那些事兒!用JavaScript  實踐《軟體工程》的那些事兒!
用JavaScript 實踐《軟體工程》的那些事兒!鍾誠 陳鍾誠
 

Viewers also liked (14)

Java_05:檔案輸出輸入機制
Java_05:檔案輸出輸入機制Java_05:檔案輸出輸入機制
Java_05:檔案輸出輸入機制
 
Java_06:Collection
Java_06:CollectionJava_06:Collection
Java_06:Collection
 
Java Basic(1)
Java Basic(1)Java Basic(1)
Java Basic(1)
 
Java_03:進階物件導向觀念
Java_03:進階物件導向觀念Java_03:進階物件導向觀念
Java_03:進階物件導向觀念
 
第六堂 Youtube 播放 App (1)
第六堂 Youtube 播放 App (1)第六堂 Youtube 播放 App (1)
第六堂 Youtube 播放 App (1)
 
第十一堂 學習編譯與上架
第十一堂 學習編譯與上架第十一堂 學習編譯與上架
第十一堂 學習編譯與上架
 
Java8 time
Java8 timeJava8 time
Java8 time
 
Java_08:SQL
Java_08:SQLJava_08:SQL
Java_08:SQL
 
Java_02:初探物件導向程式設計
Java_02:初探物件導向程式設計Java_02:初探物件導向程式設計
Java_02:初探物件導向程式設計
 
Java 基本程式設計
Java 基本程式設計Java 基本程式設計
Java 基本程式設計
 
第二堂 學習 Java 語法 (1) Java 歷史與程序開發
第二堂 學習 Java 語法 (1) Java 歷史與程序開發第二堂 學習 Java 語法 (1) Java 歷史與程序開發
第二堂 學習 Java 語法 (1) Java 歷史與程序開發
 
沒有 GUI 的 Git
沒有 GUI 的 Git沒有 GUI 的 Git
沒有 GUI 的 Git
 
Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)
Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)
Hadoop, the Apple of Our Eyes (這些年,我們一起追的 Hadoop)
 
用JavaScript 實踐《軟體工程》的那些事兒!
用JavaScript  實踐《軟體工程》的那些事兒!用JavaScript  實踐《軟體工程》的那些事兒!
用JavaScript 實踐《軟體工程》的那些事兒!
 

Similar to Java_07:Thread

Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行APIJava SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行APIJustin Lin
 
DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略Will Huang
 
前端自動化工具
前端自動化工具前端自動化工具
前端自動化工具國昭 張
 
CH11:執行緒與並行API
CH11:執行緒與並行APICH11:執行緒與並行API
CH11:執行緒與並行APIJustin Lin
 
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Java SE 8 技術手冊第 11 章 - 執行緒與並行APIJava SE 8 技術手冊第 11 章 - 執行緒與並行API
Java SE 8 技術手冊第 11 章 - 執行緒與並行APIJustin Lin
 
Linux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledgeLinux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledgeAngel Boy
 
D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版Jackson Tian
 
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践Node.js在淘宝的应用实践
Node.js在淘宝的应用实践taobao.com
 
Web development with zend framework
Web development with zend frameworkWeb development with zend framework
Web development with zend frameworkthinkinlamp
 
Multi thread 多執行緒程式設計(use c#)
Multi thread 多執行緒程式設計(use c#)Multi thread 多執行緒程式設計(use c#)
Multi thread 多執行緒程式設計(use c#)Gelis Wu
 
千呼萬喚始出來的 Java SE 7
千呼萬喚始出來的 Java SE 7千呼萬喚始出來的 Java SE 7
千呼萬喚始出來的 Java SE 7Justin Lin
 
模块一-Go语言特性.pdf
模块一-Go语言特性.pdf模块一-Go语言特性.pdf
模块一-Go语言特性.pdfczzz1
 
推薦系統實作
推薦系統實作推薦系統實作
推薦系統實作FEG
 
Node js实践
Node js实践Node js实践
Node js实践myzykj
 
FHIR Server 安裝與使用
FHIR Server 安裝與使用FHIR Server 安裝與使用
FHIR Server 安裝與使用Lorex L. Yang
 
JavaScript 80+ Programming and Optimization Skills
JavaScript 80+ Programming and Optimization SkillsJavaScript 80+ Programming and Optimization Skills
JavaScript 80+ Programming and Optimization SkillsHo Kim
 
改善 Angular 開發流程:你所不知道的 Schematics 程式碼產生器
改善 Angular 開發流程:你所不知道的 Schematics 程式碼產生器改善 Angular 開發流程:你所不知道的 Schematics 程式碼產生器
改善 Angular 開發流程:你所不知道的 Schematics 程式碼產生器Chieh Kai Yang
 

Similar to Java_07:Thread (20)

Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行APIJava SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
 
DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略
 
前端自動化工具
前端自動化工具前端自動化工具
前端自動化工具
 
Java Thread
Java ThreadJava Thread
Java Thread
 
Win dbg入门
Win dbg入门Win dbg入门
Win dbg入门
 
Windbg入门
Windbg入门Windbg入门
Windbg入门
 
CH11:執行緒與並行API
CH11:執行緒與並行APICH11:執行緒與並行API
CH11:執行緒與並行API
 
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Java SE 8 技術手冊第 11 章 - 執行緒與並行APIJava SE 8 技術手冊第 11 章 - 執行緒與並行API
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
 
Linux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledgeLinux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledge
 
D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版
 
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践Node.js在淘宝的应用实践
Node.js在淘宝的应用实践
 
Web development with zend framework
Web development with zend frameworkWeb development with zend framework
Web development with zend framework
 
Multi thread 多執行緒程式設計(use c#)
Multi thread 多執行緒程式設計(use c#)Multi thread 多執行緒程式設計(use c#)
Multi thread 多執行緒程式設計(use c#)
 
千呼萬喚始出來的 Java SE 7
千呼萬喚始出來的 Java SE 7千呼萬喚始出來的 Java SE 7
千呼萬喚始出來的 Java SE 7
 
模块一-Go语言特性.pdf
模块一-Go语言特性.pdf模块一-Go语言特性.pdf
模块一-Go语言特性.pdf
 
推薦系統實作
推薦系統實作推薦系統實作
推薦系統實作
 
Node js实践
Node js实践Node js实践
Node js实践
 
FHIR Server 安裝與使用
FHIR Server 安裝與使用FHIR Server 安裝與使用
FHIR Server 安裝與使用
 
JavaScript 80+ Programming and Optimization Skills
JavaScript 80+ Programming and Optimization SkillsJavaScript 80+ Programming and Optimization Skills
JavaScript 80+ Programming and Optimization Skills
 
改善 Angular 開發流程:你所不知道的 Schematics 程式碼產生器
改善 Angular 開發流程:你所不知道的 Schematics 程式碼產生器改善 Angular 開發流程:你所不知道的 Schematics 程式碼產生器
改善 Angular 開發流程:你所不知道的 Schematics 程式碼產生器
 

Java_07:Thread