* Các threads chia sẽ cùng một tài nguyên của tiến trình, bao gồm bộ nhớ và các file, ... * Điều này làm cho giao tiếp hiệu quả nhưng lại tiềm ẩn bên trong nó các vấn đề về xử lý tranh c[r]
(1)Chương 4: LẬP TRÌNH ĐA TIỂU TRÌNH
Khoa CNTT
ĐH GTVT TP.HCM
(2)Nội dung
1 Giới thiệu
2 Lập trình multithread
(3)Giới thiệu
Concurrency
* Máy tính ngày cho phép ta sử dụng lúc nhiều ứng dụng, chẳng hạn bạn vừa nghe nhạc, vừa đánh văn word, vừa download nhạc
* Hay chí ứng dụng đơn thực nhiều task thời điểm
* Ví dụ, trình soạn thảo văn word, ln ln sẵn sàng đáp ứng kiện keyboard mouse, vừa phải reformat text cập nhật lại hình
* Các phần mềm làm task gọi phần mềm đồng
(4)Multithread
Processes Thread
* Trong tiến trình (process) có nhiều threads chạy đồng thời
* Các threads chia tài nguyên tiến trình, bao gồm nhớ file,
(5)Multithread
Minh họa Multithread
(6)Multithread
Tạo thread: Implements interface Runnable
public class HelloRunnable implements Runnable {
public void run() {
System.out.println("Hello from a thread!"); }
public static void main(String args[]) {
(new Thread(new HelloRunnable())).start(); }
(7)Multithread
Tạo thread: Extends class Thead
public class HelloThread extends Thread {
public void run() {
System.out.println("Hello from a thread!"); }
public static void main(String args[]) {
(new HelloThread()).start(); }
}
Question
Khi implements Runnable, extends Thread?
(8)Multithread
Thread bao gồm trạng thái sau (1):
* New: sau tạo thread
* Runnable: sau start() → thread chuyển sang trạng thái Runnable
* Blocked: thread trạng thái blocked nếu: Gọi sleep();
2 Thread gọi thao tác mà bị block IO
(9)Multithread
Thread bao gồm trạng thái sau (2):
* Dead (terminated): thread trạng thái khi: Thực thi xong phương thức run()
2 Xảy exception chưa catch
(10)Multithread