Danh mục tài liệu

Bài giảng Lập trình Java: Bài 9 - Bùi Trọng Tùng

Số trang: 30      Loại file: pdf      Dung lượng: 331.24 KB      Lượt xem: 18      Lượt tải: 0    
Xem trước 3 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Bài giảng Lập trình Java - Bài 9: Điều khiển luồng. Nội dung trình bày trong bài gồm: Tạo và điều khiển luồng trong Java, lập trình đa luồng trong Java, đa luồng trên giao diện chương trình, Deadlock và Livelock. Mời các bạn cùng tham khảo.
Nội dung trích xuất từ tài liệu:
Bài giảng Lập trình Java: Bài 9 - Bùi Trọng Tùng 27/09/2014 BÀI 9. ĐIỀU KHIỂN LUỒNG 1Nội dung• Tạo và điều khiển luồng trong Java• Lập trình đa luồng trong Java• Đa luồng trên giao diện chương trình• Deadlock và Livelock 2 1 27/09/2014 1. LUỒNG TRONG JAVA 3Khái niệm cơ bản• Tiến trình• Luồng• Trong Java: Luồng là đơn vị nhỏ nhất của đoạn mã có thể thực thi được để thực hiện một công việc riêng biệt• Java hỗ trợ đa luồng, • Có khả năng làm việc với nhiều luồng. • Một ứng dụng có thể bao hàm nhiều luồng. • Mỗi luồng được đăng ký một công việc riêng biệt, mà chúng được thực thi đồng thời với các luồng khác.• Đặc điểm đa luồng • Đa luồng giữ thời gian nhàn rỗi của hệ thống thành nhỏ nhất. (tận dụng tối đa CPU) • Trong đa nhiệm, nhiều chương chương trình chạy đồng thời, mỗi chương trình có ít nhất một luồng trong nó. 4 2 27/09/2014 Tạo và quản lý luồng • Khi chương trình Java thực thi hàm main() tức là luồng main được thực thi. luồng này được tạo ra một cách tự động. tại đây : • Các luồng con sẽ được tạo ra từ đó • Nó là luồng cuối cùng kết thúc việc thực hiện. • Khi luồng chính ngừng thực thi, chương trình bị chấm dứt • Luồng có thể được tạo ra bằng 2 cách: • Kế thừa từ lớp Thread • Thực thi từ giao diện Runnable. 5 Lớp Threadpublic class Thread extends Runable(){ public static final int MAX_PRIORITY = 10; public static final int MIN_PRIORITY = 1; public static final int NORM_PRIORITY = 5; //Nested class static class State(){};//Trạng thái của luồng //Xử lý sự kiện luồng bị dừng do không bắt ngoại lệ static interface UncaughtExceptionHandler(){} //Constructor public Thread(){}; public Thread(Runable target); public Thread(Runable target, String threadName); //public methods...} 6 3 27/09/2014Một số phương thức chính• void start(): bắt đầu thực thi luồng• void run(): thực thi luồng. Mặc định được gọi trong phương thức start()• void setName(String name): đặt tên cho luồng• void setPriority(int priority): thiết lập độ ưu tiên• void interrupt(): ngắt luồng đang thực thi• final void join(): chờ luồng kết thúc• final void join(long milisecond): chờ luồng kết thúc• final void join(long milisecond, int nanosecond): chờ luồng kết thúc• final boolean isAlive(): trả lại true nếu luồng còn đang thực thi• Thread.State getState(): Trả lại trạng thái của luồng 7Một số phương thức static• void yield(): nhường các luồng có cùng mức ưu tiên thực thi trước• void sleep(long millisec): tạm dừng luồng trong khoảng thời gian tối thiểu nào đó, nhưng vẫn giữ quyền điều khiển • Ủy nhiệm xử lý ngoại lệ InterruptException cho phương thức gọi• void sleep(long millisec, int nanosecond)• Thread currentThread() 8 4 27/09/2014Trạng thái của luồng• NEW: luồng được tạo, chưa thực thi• RUNNABLE: có thể thực thi• BLOCKED: luồng bị tạm khóa• WAITING: chờ các luồng khác thực thi• TIMED_WAITING: chờ với thời gian xác định• TERMINATED: kết thúc luồng 9Vòng đời của một luồng 10 5 27/09/2014Tạo thread(1) – Kế thừa lớp Threadclass MyThread extends Thread{ //Ghi đè phương thức run() của lớp cha public void run() { //do something } //Định nghĩa các phương thức khác} 11Tạo thread(1) – Kế thừa lớp Threadclass OtherMyThread extends Thread{ private Thread t; //Ghi đè phương thức run() của lớp cha public void run() { //do something } ...