Cỏc thuộc tớnh của thread

Một phần của tài liệu Bài giảng ngôn ngữ lập trình Java doc (Trang 136 - 138)

III.1 Độ ưu tiờn của thread

Mỗi Thread cú một độ ưu tiờn. Mặc định thỡ thread thừa kế độ ưu tiờn từ thread cha của nú- là thread đó gọi nú. Ta cú thể tăng hoặc giảm độ ưu tiờn của bất kỳ thread nào với phương thức setPriority() bằng một giỏ trị nằm giữa MIN_PRIORITY(1) và MAX_PRIORITY (10).

Cỏc thread cú độ ưu tiờn càng cao thỡ khả năng thực hiện càng cao.

III.2 Nhúm thread

Cỏc thread cú thể được đưa vào cựng một nhúm để cú thể đồng thời làm việc với cả nhúm thread này.

Khai bỏo một nhúm Thread: String groupName = . . .;

ThreadGroup g = new ThreadGroup(groupName)

Sau đú, với mỗi thread được tạo ra ta dựng constructor cú khai bỏo nhúm thread: Thread t = new Thread(g, threadName);

Để kiểm tra xem cú thread nào trong nhúm g cũn hoạt động khụng, ta dựng phương thức: g. activeCount();

Để ngắt tất cả cỏc thread trong nhúm g ta gọi: g.interrupt();

III.3 Quản lý cỏc ngoại lệ của thread

Phương thức run() khụng thể nộm ra một ngoại lệ được kiểm soỏt mà bị kết thỳc bởi một ngoại lệ khụng kiểm soỏt được mỗi khi cú lỗi. Khụng cú mệnh đề catch nào được thực hiện mà thay vào đú, trước khi thread bị dead, ngoại lệ này sẽ được gửi cho một bộ xử lý ngoại lệ khụng được kiểm soỏt.

Bộ xử lý này phải thuộc một lớp cú cài đặt giao diện Thread.UncaughtExceptionHandler chỉ với 1 phương thức:

void uncaughtException(Thread t, Throwable e);

Từ phiờn bản Java 1.5, ta cú thể cài bộ xử lý ngoại lệ cho bất cứ thread nào bằng phương thức: setUncaughtExceptionHandler(). Mgoaif ra ta cú thể cài bộ xử lý ngoại lệ mặc định cho tất cả cỏc thread bằng cỏch gọi phương thức setDefaultUncaughtExceptionHandler của lớp Thread.

Nếu khụng cài bộ xử lý ngoại lệ cho một thread thỡ mặc định là null. Tuy nhiờn, cỏc thread riờng lại phụ thuộc vào bộ xử lý của nhúm thread chứa nú. Khi này, phương thức uncaughtException sẽ làm cỏc việc sau:

1- Nếu nhúm thread cú cài đặt uncaughtException thỡ phương thức đú được gọi.

2- Ngược lại, nếu phương thức Thread.getDefaultExceptionHandler trả về một bộ xử lý khụng phải là null thỡ bộ xử lý này được gọi.

3- Nếu là null, nếu Throwable là một đối tượng của TheadDead, khụng cú gỡ xảy ra. 4- Nếu khụng, tờn của thread và stack trace được gửi tới System.err và đưa ra màn hỡnh.

Một phần của tài liệu Bài giảng ngôn ngữ lập trình Java doc (Trang 136 - 138)