1. Trang chủ
  2. » Công Nghệ Thông Tin

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

30 15 0

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 30
Dung lượng 331,24 KB

Nội dung

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.

27/09/2014 BÀI ĐIỀU KHIỂN LUỒNG Nội dung • Tạo điều khiển luồng Java • Lập trình đa luồng Java • Đa luồng giao diện chương trình • Deadlock Livelock 27/09/2014 LUỒNG TRONG JAVA Khái niệm • Tiến trình • Luồng • Trong Java: Luồng đơn vị nhỏ đoạn mã thực thi để thực cơng việc riêng biệt • Java hỗ trợ đa luồng, • Có khả làm việc với nhiều luồng • Một ứng dụng bao hàm nhiều luồng • Mỗi luồng đăng ký công việc riêng biệt, mà chúng thực thi đồng thời với luồng khác • Đặc điểm đa luồng • Đa luồng giữ thời gian nhàn rỗi hệ thống thành nhỏ (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, chương trình có luồng 27/09/2014 Tạo quản lý luồng • Khi chương trình Java thực thi hàm main() tức luồng main thực thi luồng tạo cách tự động : • Các luồng tạo từ • Nó luồng cuối kết thúc việc thực • Khi luồng ngừng thực thi, chương trình bị chấm dứt • Luồng tạo cách: • Kế thừa từ lớp Thread • Thực thi từ giao diện Runnable Lớp Thread public 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 luồng //Xử lý kiện luồng bị dừng 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 } 27/09/2014 Một số phương thức • void start(): bắt đầu thực thi luồng • void run(): thực thi luồng Mặc định gọi 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 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 luồng thực thi Thread.State getState(): Trả lại trạng thái luồng Một số phương thức static • void yield(): nhường luồng có mức ưu tiên thực thi trước • void sleep(long millisec): tạm dừng luồng khoảng thời gian tối thiểu đó, 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() 27/09/2014 Trạng thái luồng • NEW: luồng tạo, chưa thực thi • RUNNABLE: thực thi • BLOCKED: luồng bị tạm khóa • WAITING: chờ 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 Vòng đời luồng 10 27/09/2014 Tạo thread(1) – Kế thừa lớp Thread class MyThread extends Thread{ //Ghi đè phương thức run() lớp cha public void run() { //do something } //Định nghĩa phương thức khác } 11 Tạo thread(1) – Kế thừa lớp Thread class OtherMyThread extends Thread{ private Thread t; //Ghi đè phương thức run() lớp cha public void run() { //do something } //Ghi đè phương thức start() lớp cha public void start(){ if (t == null) { t = new Thread (this); t.start (); } } //Định nghĩa phương thức khác } 12 27/09/2014 Ví dụ class PingPongThread extends Thread { private String word; private int delay; PingPongThread(String s, int d){ this.word =s; this.delay=d; } public void run(){ try{ for(int i = 1; i

Ngày đăng: 08/05/2021, 14:24

TỪ KHÓA LIÊN QUAN