Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 428 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
428
Dung lượng
2,33 MB
Nội dung
LẬP TRÌNH JAVA CĂN BẢN CuuDuongThanCong.com https://fb.com/tailieudientucntt Nội dung mơn học • • • • • • • • • • Chương 1- Tổng quan ngôn ngữ Java Chương 2- Giới thiệu ngôn ngữ Java Chương 3- Đối tượng lớp Chương 4- Quản lý lỗi gom rác Chương 5- Lập trình I/O Chương 6- Tạo giao diện người dùng Chương 7- Mơ hình biến cố với AWT Chương 8- Lập trình đồ họa với Java Chương 9- Tạo Applet Chương 10- Lập trình đa luồng CuuDuongThanCong.com https://fb.com/tailieudientucntt Chuẩn bị mơi trường lập trình CuuDuongThanCong.com https://fb.com/tailieudientucntt Download Java Software: Java Standard Edition Documentation Có thể mua đĩa CD CuuDuongThanCong.com https://fb.com/tailieudientucntt Cài đặt môi trường Java Xả nén Chạy CuuDuongThanCong.com https://fb.com/tailieudientucntt Download JCreator- Mơi trường lập trình Có thể mua đĩa CD CuuDuongThanCong.com https://fb.com/tailieudientucntt Cài đặt JCreator Pro Các thư mục kết qủa Chạy Mở thư mục Lấy file crack, chép đè vào file cài đặt CuuDuongThanCong.com https://fb.com/tailieudientucntt Cấu hình JCreator-slide JCreator môi trường cho ta xây dựng ứng dụng Java Do vậy, ta cần cấu hình cho JCreator bao gồm: Thư mục chứa lớp Java, thư mục nguồn, thư mục chứa file trợ giúp Chạy Jcreator từ Start/ Hoặc biểu tượng JCreator Pro desktop CuuDuongThanCong.com https://fb.com/tailieudientucntt Cấu hình JCreator-slide Chọn thư mục cài đặt JDK Chọn JDK Profile Kích New CuuDuongThanCong.com https://fb.com/tailieudientucntt Cấu hình JCreator-slide Trong thí dụ thư mục C:\Program files\Java\jdk1.5.0 CuuDuongThanCong.com Tất gói Java jdk 1.5.0 thư mục định đưa vào Classes https://fb.com/tailieudientucntt Minh họa đồng khối Chương trình sau viết lại chương trình trước, bỏ qua từ khóa synchronized lớp Monitor1 ( gọi lớp Monitor2) class Monitor2 // Monitor2.java { void Display (int num) { System.out.println("Output " + num + " - done."); try { Thread.sleep(500); // current thread sleap 1/2 sec } catch (InterruptedException e) { System.out.println ("Thread is interrupted!"); } } } CuuDuongThanCong.com https://fb.com/tailieudientucntt Minh họa đồng khối class Synchro { public static void main (String args[]) { Monitor2 monitor = new Monitor2(); int num = 10; OutNum Obj1 = new OutNum(monitor,num++); OutNum Obj2 = new OutNum(monitor,num++); OutNum Obj3 = new OutNum(monitor,num++); // wait for threads to end try { Obj1.t.join(); Obj2.t.join(); Obj3.t.join(); } catch(InterruptedException e) { System.out.println ("Thread was interrupted!"); } } } CuuDuongThanCong.com https://fb.com/tailieudientucntt Minh họa đồng khối class OutNum implements Runnable { Monitor2 monitor; int number; Thread t; OutNum(Monitor2 moni, int n ) { monitor= moni; number = n; t = new Thread(this); t.start(); } public void run() { synchronized (monitor) { monitor.Display(number); } } } CuuDuongThanCong.com https://fb.com/tailieudientucntt Minh họa đồng khối CuuDuongThanCong.com https://fb.com/tailieudientucntt 9.8- Deadlock Deadlock – tình bế tắc, đóng băng- xẩy luồng chờ tài nguyên (monitor) hình thành chu trình Deadlock xẩy Minh họa: DeadlockDemo.java CuuDuongThanCong.com https://fb.com/tailieudientucntt Giải thích DeadlockDemo class ứng dụng có luồng :Luồng t1 đối tượng d1, luồng t2 đối tượng d2 Monitor t1 lại d2 monitor t2 lại d1 (tréo nhau) Cả luồng gọi hành vi synchronized run() ngủ 300 mili giây.Vì chia sẻ thời gian CPU nên t1 ngủ trước t2 ngủ sau (xem phương thức run()) Khi t1 thức dậy (wake up), phương thức Synchro() đối tượng monitor d2 (chứa luồng t2) gọi luồng t2 ngủ nên phương thức chưa thể thực thi Khi t2 thức dậy (wake up), phương thức Synchro() đối tượng monitor d1 (chứa luồng t1) gọi luồng t1 ngủ nên phương thức chưa thể thực thi Như chương trình đóng băng (blocked) khơng làm CuuDuongThanCong.com https://fb.com/tailieudientucntt 9.9- Cơ chế chờ- nhận biết Java cung cấp sẵn chế giao tiếp liên qúa trình (inter-process mechanism) để luồng gọi (yêu cầu nhau) sử dụng final methods lớp Object: wait() , notify() , notifyAll() Như lớp sử dụng chúng phương thức gọi synchronized methods CuuDuongThanCong.com https://fb.com/tailieudientucntt Cơ chế wait-notify Phương thức wait() : Luồng nhả monitor để vào trạng thái sleep luồng khác vào monitor gọi phương thức notify Phương thức notify() : Luồng thức dậy (wake up) nhận biết (notify) luồng thứ gọi wait() Phương thức notifyAll() : Đánh thức tất luồng ngủ để chúng biết luồng hành gọi phương thức wait() Khi tất luồng ngủ thức dậy, luồng có ưu tiên cao nắm giữ monitor thực thi CuuDuongThanCong.com https://fb.com/tailieudientucntt Chú ý phương thức wait Luồng gọi phương thức wait() nhả CPU, không dùng CPU Luồng gọi phương thức wait() nhả monitor, thơi khơng khóa (lock) monitor Luồng gọi phương thức wait() đưa vào danh sách hàng đợi monitor (monitor waiting pool) CuuDuongThanCong.com https://fb.com/tailieudientucntt Chú ý phương thức notify Một luồng ngủ đưa khỏi monitor waiting pool vào trạng thái ready Luồng vừa thức giấc (notify) phải giành lại monitor khóa monitor lại khơng cho luồng khác chiếm để luồng thực thi CuuDuongThanCong.com https://fb.com/tailieudientucntt Chú ý phương thức notifyAll Luồng thực thi cảnh báo cho tất luồng ngủ “Tôi ngủ đây, bạn dậy để làm việc” Luồng đầu danh sách monitor waiting pool vào trạng thái ready CuuDuongThanCong.com https://fb.com/tailieudientucntt Bài toán triết gia ăn tối với đũa CuuDuongThanCong.com https://fb.com/tailieudientucntt 9.10- Tóm tắt Luồng biện pháp chia công việc thành đơn vị cụ thể (concrete) nên dùng để thay vòng lặp Lập trình đa luồng làm tăng hiệu suất CPU hệ thống “bận rộn” Tuy nhiên hiệu suất ứng dụng lại bị giảm kể (chậm ba bốn lần tác vụ đồng hóa), qúa trình biên dịch chậm trình biên dịch phải tính tốn chế quản lý luồng Do ứng dụng đòi hỏi yếu tố hiệu suất thời gian quan trọng, nên tránh sử dụng kỹ thuật đồng hóa Nhiều lập trình viên khơng thích lập trình đa luồng mà dùng lập trình lập trình đơn luồng để tăng hiệu suất ứng dụng Java cung cấp kỹ thuật lập trình đa luồng lớp Thread interface Runnable Khi ứng dụng Java thực thi, có luồng chạy luồng (main thread) Luồng quan trọng (1) Đây luồng sinh luồng con, (2) Quản lý việc kết thúc ứng dụng luồng main kết thúc tất luồng kết thúc CuuDuongThanCong.com https://fb.com/tailieudientucntt Tóm tắt Hiện thực luồng cách: Hiện thực lớp lớp Thread, override phương thức run() lớp Khai báo lớp mà ta xây dựng implement interface Runnable định nghĩa phương thức run() Mỗi java thread có độ ưu tiên từ (MIN) đến 10 (MAX) với trị mặc định JVM không thay đổi độ ưu tiên luồng Có contructor lớp Thread constructor thường dùng: Thread() Thread(String TênLuồng), Thread(ĐốiTượngChứa) Các phương thức Thread.suspend(), Thread.resume(), Thread.stop() khơng dùng kể từ Java Luồng daemon luồng chạy ngầm nhằm cung cấp dịch vụ cho luồng khác Nếu muốn luồng daemon, dùng public final void setDeamon (boolean) kiểm tra luồng có daemon hay không, dùng public final boolean isDaemon() CuuDuongThanCong.com https://fb.com/tailieudientucntt Tóm tắt Dữ liệu bị quán(hư hỏng) có luồng truy xuất liệu thời điểm Đồng 1quá trình bảo đảm tài nguyên (dữ liệu, file,…) luồng sử dụng thời điểm Tuy nhiên, chi phí cho việc lại làm giảm hiệu suất thời gian ứng dụng xuống 3, lần Phương thức wait() làm luồng vào trạng thaí ngủ Phương thức notify() đánh thức luồng thứ danh sách luồng chờ đối tượng monitor Phương thức notifyAll() đánh thức tất luồng danh sách luồng chờ đối tượng monitor Deadlock xẩy luồng có phụ thuộc vòng cặp đối tượng quản lý việc đồng (synchronized object) CuuDuongThanCong.com https://fb.com/tailieudientucntt ... https://fb.com/tailieudientucntt Nội dung chương 1.1- Lịch sử Java 1.2- Những đặc điểm Java 1.3- Máy ảo Java- JVM 1.4- Mơi trường lập trình Java 1.5- Chương trình Java 1.7- Tóm tắt 1.8- Trắc nghiệm tập CuuDuongThanCong.com... 1- Tổng quan JAVA Mục tiêu: Đến cuối chương bạn (1) (2) (3) (4) Hiểu Hiểu Hiểu Java Hiểu Java đặc điểm lợi ích Java chế thực thi Java chế biên dịch chạy chương trình cấu trúc chương trình CuuDuongThanCong.com... với AWT Chương 8- Lập trình đồ họa với Java Chương 9- Tạo Applet Chương 10- Lập trình đa luồng CuuDuongThanCong.com https://fb.com/tailieudientucntt Chuẩn bị mơi trường lập trình CuuDuongThanCong.com