1. Trang chủ
  2. » Đề thi

Bài giảng Công nghệ Java: Chương 7 - PhD. Trần Quang Diệu

10 13 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

• Khi nhiều luồng cùng được thực thi, nếu có 1 luồng giữ tài nguyên mà không nhả ra sẽ làm cho các luồng khác không dùng được tài nguyên này (đói tài nguyên). Để tránh tình huống này, Ja[r]

(1)

CÔNG NGHỆ JAVA

CH7 THREADS – TIẾN TRÌNH

Quang Dieu Tran PhD

(2)

Nội dung

1- Luồng đa luồng 2- Luồng Java

3- Trạng thái luồng

4- Lập trình luồng Java 5- Độ ưu tiên luồng

6- Đồng luồng 7- Deadlock

(3)

Luồng đa luồng

Luồng- thread: Một dịng lệnh mà CPU phải thực thi.

• Các hệ điều hành cho phép nhiều luồng thực thi đồng thời Chúng ta quen với việc mở nhiều ứng dụng lần làm việc với máy tính  Nhiều ứng dụng nạp

Như vậy

– Một luồng chuỗi lệnh nằm nhớ ( chương trình nạp)

– application thơng thường thực thi luồng

(4)

Kỹ thuật đa luồng

• Với máy có m CPU chạy m luồng  Mỗi CPU chạy luồng 

Hiệu

• Với máy có m CPU chạy n luồng với n>> m Mỗi CPU chạy n/m luồng

• Với CPU chạy đồng thời k luồng với k>1 Các luồng quản lý hàng đợi, luồng cấp phát thời gian mà CPU thực thi ti (cơ chế time-slicing – phân chia tài

nguyên thời gian) Luồng đỉnh hàng đợi lấy để thực thi trước, sau ti thời gian mình, luồng đưa vào cuối hàng đợi CPU lấy luồng

(5)

Lợi ích đa luồng

Tăng hiệu suất sử dụng CPU: Phần lớn thời gian thực thi ứng dụng chờ đợi nhập liệu từ user hiệu suất sử dụng CPU chưa hiệu qủa.

Tạo đồng đối tượng: Thí dụ trò chơi, nhân vật chuyển động Trong trang Web, tạo đồng thời đường diềm (marquee) tiêu đề động (banner, chữ,ảnh chạy), vừa hiển thị đồng hồ, vừa phát nhạc, vừa chơi game, vừa hoạt ảnh

(animated images),…  Trang Web thật bắt mắt (eye-catching) quyến rũ (captivating)

(6)

Luồng Java

Main thread - luồng chính : luồng chứa luồng khác Đây luồng cho Java Application hành (mức toàn application).

Child thread - luồng : luồng tạo từ luồng khác.

(7)

Trạng thái luồng

Sinh (Born) new Thread()

Sẵn sàng ( Ready )

Đang chạy

( Running ) Ngủ lúc

( Sleeping )

Bị tạm hỗn ( Suspended

)

Bị khóa ( Blocked )

Đã chết

Đang chờ

( Waiting )

khi chờ biến cố như xuất/nhập start()

notify()

wait() sleep() wait()

stop() hay chạy xong

Hành vi để buộc

run()

Hết thời gian ngủ

(8)

Trạng thái luồng

• Một luồng sau sinh (born) không chạy mà sẵn sàng (ready) chạy Chỉ phương thức start()

được gọi luồng thực thi (chạy code phương thức run())

• Luồng thực thi bị tạm ngưng phương thức

sleep() thời khoảng lại ready sau đáo hạn thời gian Luồng ngủ không sử dụng tài nguyên CPU

• Khi nhiều luồng thực thi, có luồng giữ tài nguyên mà không nhả làm cho luồng khác khơng dùng tài ngun (đói tài ngun) Để tránh tình này, Java cung cấp chế Wait-Notify(đợi-nhận biết)

(9)

Trạng thái luồng

• Khi luồng bị tạm ngưng hay bị treo, luồng rơi vào trạng thái tạm hoãn (suspended) Phương thức

suspend()- version cũ/ wait() Java 2 dùng cho mục đích này.

• Khi suspended thread mang thực thi tiếp, trạng thái luồng resumed Phương thức

resume() – version cũ/ notify() Java dùng cho mục đích này.

• Khi luồng chờ biến cố xuất/nhập liệu Luồng rơi vào trạng thái blocked.

(10)

Lập trình luồng Java

• Cách 1: Xây dựng lớp lớp java.lang.Thread, override hành vi run() để phù hợp với mục đích tốn.

• Cách 2: Xây dựng lớp có thực interface Runnable

– Khơng cần import java.lang gói

– java.lang.Thread lớp Java xây dựng sẵn thực interface Runnable

Ngày đăng: 09/03/2021, 03:34

Xem thêm:

TỪ KHÓA LIÊN QUAN