MOB1022 slide6 da luong

39 40 0
MOB1022 slide6 da luong

Đ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

LẬP TRÌNH JAVA BÀI 6: ĐA TIẾN TRÌNH PHẦN MỤC TIÊU Giải thích multitasking multithreading Giải thích ‘thread’ Tạo thread Sử dụng thông tin thread Giải thích trạng thái thread Đồng hóa tài nguyên dùng chung Giải thích thread Deamon Sử dụng finallize() KHÁI NIỆM MULTITASKING VÀ MULTITHREADING Multitasking: Là khả chạy đồng thời nhiều chương trình lúc hệ điều hành Internet Explorer Microsoft Excel Window Media Player Multithreading: Là khả thực đồng thời nhiều tiểu trình chương trình Sheet1 Sheet2 Sheet3 THREAD LÀ GÌ? Thread đơn vị nhỏ mã thực thi mà đoạn mã thực nhiệm vụ cụ thể Một ứng dụng chia nhỏ thành nhiều nhiệm vụ nhiệm vụ giao cho thread Nhiều thread thực đồng thời gọi đa luồng (multithread) Các trình chạy dường đồng thời, thực khơng phải TẠO THREAD Hệ thống xử lý đa luồng Java xây dựng class Thread interface Runnable package java.lang Có cách để tạo lớp thread Kế thừa từ Thực thi class Thread interface Runable CÁCH 1: TẠO THREAD tiểu trình chạy song song DEMO Hiện thực hóa slide trước Giải thích kết xuất hình CÁCH 2: TẠO THREAD tiểu trình chạy chạy song song DEMO TẠO THREAD VỚI KỸ THUẬT LỚP NẶC DANH Nặc danh với Thread new Thread(){ public void run(){} }.strart(); Nặc danh với Runnable new Thread(new Runnable(){ public void run(){} }).strart(); ĐỒNG BỘ HÓA BLOCK Đồng hóa đoạn code phương thức đối tượng cách sử dụng synchronized Với việc đồng hóa block, khóa xác đoạn code cần 25 ĐỒNG BỘ HÓA BLOCK public synchronized void run(){ } Đồng hóa method viết lại đồng hóa block sau: public void run(){ synchronized(this){ } } MỐI QUAN HỆ GIỮA CÁC THEAD Java cung cấp chế giao tiếp liên-quá trình cách sử dụng phương thức wait(), notify() notifyAll() đối tượng chia sẻ Các phương thức wait(), notify() and notifyAll() gọi từ bên phương thức block đồng hóa (synchronized method) MỐI QUAN HỆ GIỮA CÁC THEAD Phương thức wait() đưa thread vào trạng thái ‘sleeping’ Phương thức notify() ‘đánh thức’ thread trạng thái ‘sleeping’ phương phức wait() bị gọi Phương thức notifyAll() ‘đánh thức’ tất thread trạng thái ‘sleeping’ phương thức wait() bị gọi Khi tất thread khỏi trạng thái spleeping, thread có độ ưu tiên cao chạy HOẠT ĐỘNG CỦA WAIT() VÀ NOTIFY() HOẠT ĐỘNG CỦA WAIT() VÀ NOTIFY() 30 HOẠT ĐỘNG CỦA WAIT() VÀ NOTIFY() thread th1 th2 dùng chung c HOẠT ĐỘNG CỦA WAIT() VÀ NOTIFY() OUTPUT Ban dang rut tien Khong du tien de rut ! Ban dang nap tien Nap tien cong !!! Ban da rut tien cong !!! 32 HIỆN TƯỢNG DEAD LOCK Dead lock: (khóa chết bế tắc) Là tình xảy hai hay nhiều tiểu trình chờ đợi lẫn (tiến trình chờ tiến trình kết thúc cơng việc tiếp tục cơng việc mình) Do vậy, tiến trình mãi trạng thái chờ đợi lẫn (waiting forever) Thread 33 Thread DAEMON THREADS Có hai loại thread Java: Thread người dùng (user thread): Là thread người dùng tạo Daemon threads: Là thread làm việc chế độ nền, cung cấp dịch vụ cho thread khác 34 DAEMON THREADS Khi thread user kết thúc hoạt động, JVM kiểm tra xem thread chạy khơng Nếu có lên lịch làm việc cho thread Nếu thread ‘daemon’ thread kết thúc hoạt động DAEMON THREADS Chúng ta thiết lập thread thread ‘daemon’ khơng muốn chương trình phải đợi đến thread kết thúc Class Thread có phương thức làm việc với thread ‘Daemon’: public final void setDaemon(boolean value) Thiết lập thread thread ‘daemon’ public final boolean isDaemon() Kiểm tra xem thread có phải ‘ daemon’ không GARBAGE COLLECTION Garbage Collection thread Daemon (là luồng thu dọn liệu không dùng đến – dọn rác) Garbage Collection tự động dọn dẹp: giải phóng vùng nhớ khơng cần thiết Một object đủ điều kiện để thu gom khơng có tham chiếu đến giá trị null Garbage Collection thread chạy riêng biệt với độ ưu tiên thấp PHƯƠNG THỨC FINALIZE () Là phương thức sử dụng cho việc dọn dẹp vùng tài nguyên không dùng trước hủy bỏ đối tượng Sau kết thúc chương trình, trước trả điều khiển cho hệ điều hành, phương thức finalize() gọi thead ‘Gabage collector’ để thực công việc dọn dẹp TỔNG KẾT NỘI DUNG BÀI HỌC Giải thích multitasking multithreading Giải thích ‘thread’ Tạo thread Sử dụng thơng tin thread Giải thích trạng thái thread Đồng hóa tài nguyên dùng chung Giải thích thread Deamon Sử dụng finallize() ... chạy chạy song song DEMO TẠO THREAD VỚI KỸ THUẬT LỚP NẶC DANH Nặc danh với Thread new Thread(){ public void run(){} }.strart(); Nặc danh với Runnable new Thread(new Runnable(){ public void

Ngày đăng: 27/10/2019, 22:16

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan