Professional Documents
Culture Documents
Bai 8 - Xu Ly Da Luong - Java
Bai 8 - Xu Ly Da Luong - Java
Network programming 1
Xử lý đa luồng trong Java
Network programming 2
Khởi tạo luồng
Network programming 3
Kế thừa lớp Thread
Đối tượng của
Lớp Thread Lớp kế thừa lớp kế thừa
Network programming 4
Ví dụ về kế thừa lớp Thread
import java.io.*;
Network programming 5
public static void main(String[] args){
// Tạo 2 đối tượng kiểu ExThread
ExThread t1 = new ExThread();
ExThread t2 = new ExThread();
Network programming 6
Thực thi Runnable interface
Runnable Interface Lớp thực thi
thực thi
run() run()
Khởi tạo
đối tượng
Đối tượng của
Đối tượng của lớp Thread
Lớp Thread run()
lớp thực thi
start () start ()
run() run()
… …
Khởi tạo đối tượng (gán tham số cho
hàm khởi tạo là đối tượng của lớp thực
thi Runnable interface )
Network programming 7
Ví dụ về thực thi Runnable Interface
import java.io.*;
Network programming 9
Kế thừa Thread hay thực thi Runnable
interface
n Phải thực thi Runnable trong trường hợp muốn kế thừa một
lớp khác không phải Thread
Network programming 10
Tuổi sống của một luồng
Có khả
Lập lịch
Khởi tạo năng thi Thi hành
hành
Không được
thi hành
Kết thúc
sleep
sleep sleep()
notìfy()
wait
notifyAll() wait()
blocking
I/O
Xử lý synchronized
lock
Xóa lock
Network programming 11
Máy chủ xử lý đồng thời đa luồng hướng
kết nối
master
Network programming 13
Thực thi máy chủ xử lý đồng thời đa
luồng hướng kết nối(2)
n Bước 1 luồng con: Hàm Run() xử lý yêu cầu của
máy khách Gửi và nhận dữ liệu
thông qua đối tượng socket kết nối x
n Bước 2 luồng con: Đóng socket kết nối và trả về
Network programming 14
Ví dụ về máy chủ Echo
n EchoServer.java
Network programming 15
Loại trừ lẫn nhau
n Các luồng chia xẻ bộ nhớ, xử lý file (file handles), sockets, và
các tài nguyên khác
n Nếu hai luồng muốn sử dụng cùng một tài nguyên tại một thời
điểm nào đó, một trong 2 luồng phải đợi luồng kia kết thúc việc
sử dụng tài nguyên
Network programming 16
Khối đồng bộ hóa
n Ấn định việc truy cập có loại trừ vào một đối tượng bởi từ khóa
synchronized
q Để thi hành một số dòng codes cùng nhau, gói chúng lại trong
n Chỉ ngăn cản các luồng đồng bộ hóa trên cùng một đối tượng không
sử dụng tài nguyên chung.
q E.g.
synchronized (System.out) {
System.out.print(input + ": ");
for (int i = 0; i < digest.length; i++) {
System.out.print(digest[i] + " ");
}
System.out.println( );
}
Network programming 17
Hàm đồng bộ hóa
n Đồng bộ tất cả hàm trên đối tượng hiện tại (tham chiếu thís) bằng
việc thêm từ khóa synchronized vào khai báo hàm
n Dùng đồng bộ hóa có thể
q Giảm tốc độ xử lý của chương trình đến 3 lần hay hơn
q Làm tăng khả năng deadlock xảy ra
Network programming 18