intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Công nghệ lập trình tích hợp: Chương 6 - TS. Nguyễn Quang Uy

Chia sẻ: _ _ | Ngày: | Loại File: PDF | Số trang:45

13
lượt xem
3
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng Công nghệ lập trình tích hợp: Chương 6 Sử dụng đa luồng trong lập trình mạng, cung cấp cho người đọc những kiến thức như: Cơ bản về luồng; Sử dụng luồng trong Java; Đa luồng trong lập trình mạng; Lock và deaklock; Đồng bộ hóa luồng; Non-blocking Server;... Mời các bạn cùng tham khảo!

Chủ đề:
Lưu

Nội dung Text: Bài giảng Công nghệ lập trình tích hợp: Chương 6 - TS. Nguyễn Quang Uy

  1. Chương 6 Sử dụng đa luồng trong lập trình mạng 1
  2. Mục lục chương • 1. Cơ bản về luồng • 2. Sử dụng luồng trong Java • 3. Đa luồng trong lập trình mạng • 4. Lock và deaklock • 5. Đồng bộ hóa luồng • 6. Non-blocking Server 2
  3. Cơ bản về luồng • Một luồng (thread) là một dòng điểu khiển trong một chương trình • Không giống như một tiến trình (process), một luồng không được cấp phát riêng một vùng nhớ mà dùng chung vùng nhớ với chương trình chính • Điều này có nghĩa là nếu như chương trình server có nhiều yêu cầu kết nối đến, thì việc sử dụng thread sẽ giúp server không bị hết tài nguyên 3
  4. Cơ bản về luồng • Trong thực tế, khi bất kỳ một chương trình Java nào được thực hiện thì một luông luôn được tạo ra • Thread đó là thread chính (main thread) được tạo ra khi hàm main được thực hiện và được hủy bỏ khi hàm main kết thúc • Nếu chương trình của ta tạo ra thêm các hàm khác thì chương trình đó được gọi là đa luồng (multithread) • Khi máy tính có chỉ có một CPU thì các thread chỉ được thực hiện tuần tự 4
  5. Sử dụng luồng trong Java • Java là ngôn ngữ hỗ trợ lập trình đa luồng đầy đủ mà không phải gọi bất kỳ một hàm API nào • Tuy nhiên việc sử dụng luồng trong lập trình Java tương đối phức tạo đỏi hỏi sự cố gắng của lập trình viên 5
  6. Sử dụng luồng trong Java • Trong java có hai cách để tạo ra các luông đó là: – Tạo ra một lớp thừa kế từ lớp Thread – Tạo ra một lớp không thừa kế từ lớp Thread nhưng cài đặt giao tiếp Runnable 6
  7. Thừa kế lớp Thread • Phương thức run của lớp Thread chỉ ra hành động là Thread được thực hiện. • Tuy nhiên cũng như phương thức main, phương thức run có thể không được gọi ra một cách trực tiếp. • Ta có thể gọi đến phương thức start, và phương thức này sẽ tự động gọi đến phương thức run. 7
  8. Thừa kế lớp Thread • Lớp Thread có 7 hàm tạo và hai hàm tạo được sử dụng phổ biết nhất là – Thread() – Thread(String) – Nếu gọi hàm thứ 2 thì ta cần chỉ ra tên của thread, Nếu gọi hàm thứ nhất thì tên của thread sẽ là: Thread-n 8
  9. Thừa kế lớp Thread • Phương thức getName có thể được sử dụng để nhận lại tên của Thread – Thread firstThread = new Thread(); – Thread secondThread = new Thread("namedThread"); – System.out.println(firstThread.getName()); – System.out.println(secondThread.getName()); 9
  10. Thừa kế lớp Thread • Phương thức sleep được sử dụng để tạm dùng thread trong một khoảng thời gian (miniseconds) – myThread.sleep(1500); • Phương thức interrupt được sử dụng để phá vỡ một thread đang sleeping 10
  11. Ví dụ 1 về Thread • public class ThreadShowName extends Thread • { • public static void main(String[] args) • { • ThreadShowName thread1, thread2; • thread1 = new ThreadShowName(); • thread2 = new ThreadShowName(); • thread1.start(); • thread2.start(); • } 11
  12. Ví dụ 1 về Thread • public void run(){ • int pause; • for (int i=0; i
  13. Ví dụ 2 về sử dụng Thread • public class ThreadHelloCount • { • public static void main(String[] args) • { • HelloThread hello = new HelloThread(); • CountThread count = new CountThread(); • hello.start(); • count.start(); • } • } 13
  14. Ví dụ 2 về sử dụng Thread • class HelloThread extends Thread • { • public void run() • { • int pause; • for (int i=0; i
  15. Ví dụ 2 về sử dụng Thread • class CountThread extends Thread • { • int pause; • public void run() • { • for (int i=0; i
  16. Cài đặt giao tiếp Runnable • Phương pháp này tương tự như phương pháp đã mô tả trước • Đầu tiên ta tạo ra một lớp ứng dụng cài đặt giao tiếp Runnable • Sau đó để tạo ra các thread ta tạo ra đối tượng của lớp Runnable sau đó chuyển kiểu thành kiểu thread 16
  17. Cài đặt giao tiếp Runnable • Để thực hiên điều đó ta tạo ra một đối tượng Thread và truyền đối tượng Runnable như là một tham số của nó • Có hai hàm tạo của lớp Thread cho phép ta làm điều này: – Thread (Runnable ) – Thread(Runnable , String ) – (The second of these allows us also to name the thread.) 17
  18. Ví dụ 3 về Thread • public class RunnableShowName implements Runnable • { • public static void main(String[] args) • { • Thread thread1 = new Thread(new RunnableShowName()); • Thread thread2 = new Thread(new RunnableShowName()); • thread1.start(); • thread2.start(); • } 18
  19. Ví dụ 3 về Thread • public void run() • { • int pause; • for (int i=0; i
  20. Ví dụ 4 về Thread • public class RunnableHelloCount implements Runnable • { • private Thread thread1, thread2; • public static void main(String[] args) • { • RunnableHelloCount threadDemo = • new RunnableHelloCount(); • } 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2