Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 224 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
224
Dung lượng
10,36 MB
Nội dung
L Biên www.hutech.edu.vn *1.2021.CMP167* tailieuhoctap@hutech.edu.vn : I .I V 10 10 2.2.4 Th 11 11 12 13 14 14 15 15 18 c Website 18 3.2.2 Java Web 19 21 21 3.3 22 22 II 3.3.2 .22 23 23 .23 23 3.3.7 Không gian nhúng 24 3.3.8 Các 24 .24 24 25 26 30 ARRAY 31 3.7.1 M .31 .33 WRAPPER 35 37 38 - 40 40 40 40 41 43 44 45 46 49 50 50 51 4.8.3 Code static 51 53 53 58 58 59 59 .61 62 62 III 63 64 Object TRONG JAVA 65 67 69 70 72 74 74 77 77 78 80 TÓ 84 85 BÀI 7: EXCEPTION 87 87 88 90 92 93 94 T 96 96 BÀI 8: INTERFACE VÀ PACKAGE 98 8.1 INTERFACE LÀ GÌ? 98 8.2 KHAI BÁO INTERFACE 99 100 102 103 8.6 Comparable Interface 104 8.7 Comparator Interface 105 8.8 PACKAGE LÀ GÌ? 108 108 113 114 ÁT 115 115 115 115 9.1 117 IV 118 120 121 9.2 121 121 9.2.2 Collections Framework 122 9.2.3 Iterator ( 9.3 ) Java 123 123 9.3.1 Interface Collections 123 9.3.2 List Interface 124 9.3.3 Set Interface Java 129 9.3.4 Map Interface 132 9.3.5 SortedMap Interface 143 9.3.6 Class Collections 148 9.3.7 LinkedList Java 148 9.3.8 ArrayList Java 152 9.3.9 HashSet 156 9.3.10 TreeSet 163 9.3.11 HashMap 172 9.3.12 TreeMap 183 9.4 193 9.4.1 Template Method gì? 193 194 197 197 200 10.1 KHÁI 200 200 201 202 202 206 209 209 210 213 213 214 V MƠ MƠN trình cho sinh viên theo mơn pháp phân tích, trình mơn tốn cung ngơn Java khái (abstract data type), tính bao (encapsulation), tính (inheritance) pháp phát sinh viên trình Java, có trình theo cho sinh viên trình giúp sinh viên có (polymorphism), tính cung pháp Mơn tiên trình theo làm quen ngơn hình ngơn Java pháp DUNG MƠN - Bài trình Bài cung trình làm quen khác - cho sinh viên khái ngơn trình Bài 2: Các khái trình sinh viên khái trình Bài cung cho trình thơng trình - Bài 3: Bài 4: cú pháp hình cho sinh viên khái trình Java cú pháp trình - gói, Java: Bài cung môi sinh viên ngôn Bài cung xây tính cung Java theo cho sinh viên cho sinh viên mơi pháp trình khái phân VI modifier, khóa this, static, final, cách trình - Bài 5: Tính tính hình: Bài cung tính hình, phân overloading overriding tính - Bài 6: cho sinh viên khái cung cách phân cho sinh viên hình mơi Bài cung Bên trình Java cho sinh viên khái cung cho sinh viên Java - Bài 7: Exception: Bài cung lan cho sinh viên khái cách try catch finally Ngoài ra, sinh viên trúc Exception Java, Exception cách Exception - Bài 8: Interface Package: Bài cung cách khai báo interface interface, cung - khái cung tính cú pháp Bài 9: trình trình qt, cách Bài 10: package cách quát: Bài cung Môn YÊU pháp package cho sinh viên khái Generic, trúc Template : Bài cung cách cho sinh viên interface Ngồi ra, cịn qt có - cho sinh viên khái cho sinh viên khái hố trình sinh viên có trình MƠN lên làm nhà VII CÁCH DUNG MƠN mơn này, làm quan ôn hành; dung thúc tồn và tìm thêm thơng tin liên tiêu tóm thúc ý bài làm PHÁP Môn câu sau ôn hành GIÁ MƠN giá q trình: 50% Hình Chun Bài Bài - câu bài - : 20% nhà: 10% cá nhân, thi: 50% Hình : 20% : Thi 75 phút, thi 200 BÀI 10: BÀI 10: Sau - xong này, sinh viên có Làm quen kh i ni cách m v lu ng d hố nh Thread hay cịn cơng LU NG D là hoàn toàn riêng (multithreaded) Thread chia (thread) riêng LI U v Thread Java? Virtual Machine) Java có u 10.1 KHÁI NI M V 10.1.1 li Java, lý ngôn ý riêng thread có Hình 10.1: Vịng Thread máy trình Java (Java phân bên song song riêng Thread Java thành 201 BÀI 10: Thread qua giai khác nhau, sau sau vịng sinh ra, Thread Chúng ta quan sát thích qua khái có này: New: thái thái cho Runnable: Khi Và tiên Thread khi, khác tác thread khác sinh và xem tác thread Và thread lý 10.1.2 mình, thái runnable có gian thread tác hay dài tùy vào thái l p trình Java cịn Multitasking trình trình song song gian thái runnable có hồn thành xong (multitasking) thành thread Trong Java, Multithreading lên thread xong tác ti n trình ngơn ng trình mình thái timed waiting terminated thành runnable thái runnable Sau thread Timed waiting: Terminated: thái waiting vào vịng trình thái này, Waiting: Thread trình có (thread) trình (process) Java ngồi có Java giúp cơng Tóm song có hồn thành Java có lúc gian tính lý khác qua nano giây) thi cách nhanh chóng khác song lúc Tuy nói có 202 BÀI 10: có ta có 2, ví trình sang gian liên trình trình thúc qua trình trình nhanh nên song song trình Quá trình ý trình trình gian trình thi sau: Ta có có nhanh, giác hai có gian trình chênh gian 10.1.3 Các cách t o lu ng Java Java cung cho trình có tên Thread Thread có Trong Java, có hai cách Thread cách hai là implements Interface có tên Runnable Hai cách có có khác sau: nhau: Khác nhau: dùng khơng tính cách thêm Cịn khác ngơn khác 10.1.4 T o lu ng b ng cách k th a t cách Thread nhiên lúc Thread l p Thread Thread, nói, Thread Trong ví trình Java khơng cách implements Interface Runnable có Thread Thread MyThread có ra có tên MyThread có trình 203 BÀI 10: MyThread.java package vidu; public class MyThread extends Thread { } Sau có hành ghi run() run() thi này, vào Source run() Thread OK ghi Override/Implement Methods, sau thúc Lúc MyThread có dung sau: Java package vidu; public class MyThread extends Thread { public void run() { // TODO Auto-generated method stub super.run(); } } Trong run(), ta vịng for tên thơng System.out.println(Thread.currentThread().getName()); khơng hành khó ) qua dịng hành khơng Java i trình khác nhau, sau ( vào 204 BÀI 10: MyThread.java package vidu; public class MyThread extends Thread { public void run() { super.run(); for (int i = 0; i < 5; i++) { // Thread.currentThread().getName(): cho // tên có tên thay System.out.println(Thread.currentThread().getName()); } } } TestThread.java ,myThread1.start(); package vidu; public class TestThread { public static void main(String[] args) { // myThread0 MyThread MyThread myThread0 = new MyThread(); myThread0.start(); // kích // myThread1 MyThread MyThread myThread1 = new MyThread(); // myThread2 MyThread MyThread myThread2 = new MyThread(); 2");// thay tên thành myThread2.start(); } } Trong dùng TestThread, ta có dịng code thay tên Thread- myThread2 thành 2");, 2", dòng tên 205 BÀI 10: ý: câu mà khai báo run() (trong ví tên thi thì ) start() thi start() phát tài nguyên cho khơng dùng run() start() quan câu có run() có khơng Thread ngơn Java - public void start(): thread run() - public void run(): Thread run() public final void setName(String name): Thay có - getName() - có 10 tham true Thread Daemon thread hai, làm cho Thread sau mili giây public void interrupt(): block - có tiên public final void join(long millis): Thread thread - Thread tên public final void setDaemon(boolean in): - thu tên public final void setPriority(int priority): Thread Giá sau Thread Runnable, - path riêng block thread hai thúc xác thread này, làm cho thi lý public final boolean isAlive(): true thread alive, mà gian sau thread run thúc - public static void yield(): Làm cho thread thread khác có - tiên mà public static void sleep(long millis): Làm cho thread mili giây xác ghi trình block 206 - BÀI 10: public static boolean holdsLock(Object x): Object - thread lock cho public static Thread currentThread(): tham mà thread mà - true thread public static void dumpStack(): In stack trace cho thread Nó ích debugging 10.1.5 T o lu ng b ng cách implement Interface Runnable cách implement Interface Runnable, implement Interface Trong ví , DemoThread implement Interface Runnable nhiên lúc có tên DemoThread có DemoThread.java package vidu; public class DemoThread implements Runnable { @Override public void run() { // TODO Auto-generated method stub } } cách Thread cách implement Interface Runnable có khác run() Thread ta Runnable Trong sau: run() có run() thi hành override run() này, override DemoThread thêm vào code BÀI 10: DemoThread.java package vidu; public class DemoThread implements Runnable { @Override public void run() { for (int i = 0; i < 3; i++) { // Thread.currentThread().getId(): // dùng // phân thông mà máy id khác java // nên ta khơng trình ta áp thơng System.out.println(Thread.currentThread().getId() + "\t" + Thread.currentThread().getName()); } } } Main.java package vidu; public class Main { public static void main(String[] args) { DemoThread demoThread0 = new DemoThread(); Thread thread0 = new Thread(demoThread0); thread0.start(); DemoThread demoThread1 = new DemoThread(); Thread thread1 = new Thread(demoThread1); 1"); thread1.start(); DemoThread demoThread2 = new DemoThread(); Thread thread2 = new Thread(demoThread2); thread2.start(); } } 207 208 BÀI 10: sau biên Chúng ta trình: cách chia s minh cách implement Interface Runnable tính này: ShareThread.java package vidu; public class ShareThread implements Runnable { private int shareVariable = 0; // tính chung public int getShareVariable() { return shareVariable; } @Override public void run() { for (int i = 0; i < 3; i++) { System.out.println("ID:" + Thread.currentThread().getId() + ", Name: " + Thread.currentThread().getName() + ", shareVariable = " + shareVariable); shareVariable += 2; } } } trình Ví 209 BÀI 10: TestShareThread.java package vidu; public class TestShareThread { public static void main(String[] args) { ShareThread shareThread = new ShareThread(); Thread thread0 = new Thread(shareThread); 1"); thread0.start(); Thread thread1 = new Thread(shareThread); 2"); thread1.start(); Thread thread2 = new Thread(shareThread); 3"); thread2.start(); tính shareVariable + shareThread.getShareVariable()); } } 10.2 NG B 10.2.1 ng b HOÁ LU NG TRONG JAVA lu ng Java Java, ta xét sau: giao rút tài cho 10 nhân viên có tài giao ngân hàng chung lúc này, hành công ty la 10.000$ Vào lúc 9h sáng, giám khách hàng rút công ty ví giám tốn rút 2.000$ tài Trong hành công ty cho công ty tác công ty thúc vào tra 9.000$ tài 210 BÀI 10: Lúc này, giao rút tốn giám tra rút 9.000$ thúc nên máy ATM 10.000$ giao Và khơng có hành thành cơng ngân hàng rút mà 1.000$ hóa Tóm trong Java vào khơng có (trong ví xung thi ) cho khóa hay có truy tài chung ) thi (rút thúc khác Java Java, khóa synchronized trình bày chi 10.2.2 ng b lu ng s d ng t khóa synchronized Java, minh hàng cách sau khóa synchronized vi truy khóa này, ta có ví minh sau: Customer.java package dongboluong; public class Customer { private int taiKhoan = 10000; public Customer() { System.out.println("Tài có = " + taiKhoan); } private synchronized void rutTien (int soTienRut) { System.out.println("Giao " rút = " + soTienRut + " "); khóa + tốn ngân 211 BÀI 10: if(taiKhoan < soTienRut) { tài không try { wait(); // wail Thread vào thái sleeping } catch (InterruptedException ie) { System.out.println(ie.toString()); } } taiKhoan -= soTienRut; System.out.println("Rút thành có tài } private synchronized void nopTien(int soTienNop) { System.out.println("Giao " + = " + soTienNop + " "); taiKhoan += soTienNop; thành notify(); } public static void main(String[] args) { final Customer customer = new Customer(); Thread t1 = new Thread(){ public void run() { customer.rutTien(20000); } }; t1.start(); Thread t2 = new Thread(){ public void run() { customer.nopTien(30000); } }; có tài ="+taiKhoan); 212 BÀI 10: t2.start(); } } thích Trong ví trình trên: trên, có tài Trong hàm main(), có t2 t1 vào tài rút rutTien(), lúc không nên hành rút dòng wait() Sau Thread t2 vào Thread Thread t1) Lúc > 20.000$ thái sleeping thơng qua vào nopTien() Trong thành cơng dịng thái sleeping rutTien() rút 20.000$ hành tài thi, lúc khách hàng 40.000$ thông qua nopTien() này, Trong Thread t1, khách hàng rút 20.000$ thông qua tài ngân hàng 10.000$ rút notify() wait() tra tài ( 40.000$ thành cơng tài 213 BÀI 10: TĨM Trong này, sinh viên - Làm quen - kh i ni cách m v lu ng d hoá li sau: u BÀI Câu 1: file MyThread1.java thi interface Runnable cơng sau: - Trong run() vịng in 10 nhiên tiên in cách 500 milliseconds - object class MyThread Thread1 Thread2 tiên mà MAX_PRIORITY MIN_PRIORITY - start() cho Câu 2: - thread file MyThread2.java, theo yêu thread thread Thread Thread - in code cho thread in trình 10 10 xong thread sang 214 TÀI THAM [1] Ban (2005) [2]Hồng trình (2012) trình NXB Khoa Hà Java Yên [3] Minh Châu, Cơng Hà Giáo trình Hà trình [4]Deitel & Deitel (2012) Java How to program Prentice [5]Kathy Sierra, Bert Bates (2008) Head First Java [6]https://freetuts.net Java Hall