JAVA CORE - Trang 166

www.updatesofts.com

!

"

+

&

isAlive()

Trả về Đúng, nếu luồng vẫn còn tồn tại (sống)

getPriority()

Trả về quyền ưu tiên của luồng

setName(String name)

Đặt tên của luồng là tên mà luồng được truyền
như là một tham số.

join()

Đợi cho đến khi luồng chết.

isDaemon(Boolean on)

Kiểm tra nếu luồng là luồng một luồng hiếm.

resume()

Đánh dấu luồng như là luồng hiếm hoặc luồng
người sứ dụng phụ thuộc vào giá trị được truyền
vào.

sleep()

Hoãn luồng một khoáng thời gian chính xác.

start()

Gọi phương thức run() để bắt đầu một luồng.

Bảng 8.1 Các phương thức của một lớp luồng

Bảng kế hoạch Round-robin (bảng kiến nghị ký tên vòng tròn) liên quan đến các luồng

với cùng quyền ưu tiên được chiếm hữu quyền ưu tiên của mỗi luồng khác. Chúng chia
nhỏ thời gian một cách tự động trong theo kiểu kế hoạch xoay vòng này.

Phiên bản mới nhất của Java không hổ trợ các phương thức Thread.suspend() (trì

hoãn), Thread.resume() (phục hồi) và Thread.stop() (dừng), như là các phương thức
resume() (phục hồi) và suspend() (trì hoãn) được thiên về sự đình trệ (deadlock), trong
khi phương thức stop() không an toàn.

8.6

Thời gian biểu luồng

Hầu hết các chương trình Java làm việc với nhiều luồng. CPU chứa đựng cho việc

chạy chương trình chỉ một luồng tại một khoảng thời gian. Hai luồng có cùng quyền ưu
tiên trong một chương trình hoàn thành trong một thời gian CPU. Lập trình viên, hoặc máy
ảo Java, hoặc hệ điều hành chắc chắn rằng CPU được chia sẻ giữa các luồng. Điều này
được biết như là bảng thời gian biểu luồng.

Không có máy ảo Java nào thực thi rành mạch cho bảng thời gian biểu luồng. Một

số nền Java hổ trợ việc chia nhỏ thời gian. Ở đây, mỗi luồng nhận một phần nhỏ của thời
gian bộ vi xử lý, được gọi là định lượng. Luồng có thể thực thi tác vụ của chính nó trong
suốt khoảng thời gian định lượng đấy. Sau khoảng thời gian này được vượt qua, luồng
không được nhận nhiều thời gian để tiếp tục thực hiện, ngay cả nếu nó không được hoàn
thành việc thực hiện của nó. Luồng kế tiếp của luồng có quyền ưu tiên bằng nhau này sẽ
lấy khoảng thời gian thay đổi của bộ vi xử lý. Java là người lập thời gian biểu chia nhỏ tất
cả các luồng có cùng quyền ưu tiên cao.

Phương thức setPriority() lấy một số nguyên (integer) như là một tham số có thể

hiệu chỉnh quyền ưu tiên của một luồng. Đây là giá trị có phạm vi thay đổi từ 1 đến 10,
mặc khác, phương thức đưa ra một ngoại lệ (bẫy lỗi) được gọi là IllegalArgumentException
(Chấp nhận tham số trái luật)

Phương thức yield() (lợi nhuận) đưa ra các luồng khác một khả năng để thực thi.

Phương thức này được thích hợp cho các hệ thống không chia nhỏ thời gian (non-time-
sliced), nơi mà các luồng hiện thời hoàn thành việc thực hiện trước khi các luồng có quyền
ưu tiên ngang nhau kế tiếp tiếp quản. Ở đây, bạn sẽ gọi phương thức yield() tại những
khoản thời gian riêng biệt để có thể tất cả các luồng có quyền ưu tiên ngang nhau chia sẻ
thời gian thực thi CPU.

Chương trình 8.2 chứng minh quyền ưu tiên của luồng:

Chương trình 8.2

class PriorityDemo {

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.