Bài giảng Công nghệ lập trình tích hợp: Chương 6 - TS. Nguyễn Quang Uy
Số trang: 45
Loại file: pdf
Dung lượng: 107.61 KB
Lượt xem: 17
Lượt tải: 0
Xem trước 5 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
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!
Nội dung trích xuất từ tài liệu:
Bài giảng Công nghệ lập trình tích hợp: Chương 6 - TS. Nguyễn Quang Uy Chương 6 Sử dụng đa luồng trong lập trình mạng 1 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 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 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 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 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 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 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 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 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 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 Ví dụ 1 về Thread • public void run(){ • int pause; • for (int i=0; i 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 Ví dụ 2 về sử dụng Thread • class HelloThread extends Thread • { • public void run() • { • int pause; • for (int i=0; i Ví dụ 2 về sử dụng Thread • class CountThread extends Thread • { • int pause; • public void run() • { • for (int i=0; i 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 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 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 Ví dụ 3 về Thread • public void run() • { • int pause; • for (int i=0; i Ví dụ 4 về Thread • public class RunnableHelloCount implements Runnable • { • private Thread thread1, thread2; • public static void main(String[] args) • { • RunnableHelloCount threadDemo = • new RunnableHelloCount(); • } ...
Nội dung trích xuất từ tài liệu:
Bài giảng Công nghệ lập trình tích hợp: Chương 6 - TS. Nguyễn Quang Uy Chương 6 Sử dụng đa luồng trong lập trình mạng 1 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 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 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 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 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 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 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 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 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 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 Ví dụ 1 về Thread • public void run(){ • int pause; • for (int i=0; i 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 Ví dụ 2 về sử dụng Thread • class HelloThread extends Thread • { • public void run() • { • int pause; • for (int i=0; i Ví dụ 2 về sử dụng Thread • class CountThread extends Thread • { • int pause; • public void run() • { • for (int i=0; i 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 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 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 Ví dụ 3 về Thread • public void run() • { • int pause; • for (int i=0; i Ví dụ 4 về Thread • public class RunnableHelloCount implements Runnable • { • private Thread thread1, thread2; • public static void main(String[] args) • { • RunnableHelloCount threadDemo = • new RunnableHelloCount(); • } ...
Tìm kiếm theo từ khóa liên quan:
Bài giảng Công nghệ lập trình tích hợp Công nghệ lập trình tích hợp Lập trình tích hợp Đa luồng trong lập trình mạng Đồng bộ hóa luồngGợi ý tài liệu liên quan:
-
Bài giảng Công nghệ lập trình tích hợp: Chương 4.3 - TS. Nguyễn Quang Uy
20 trang 21 0 0 -
Bài giảng Công nghệ lập trình tích hợp: Chương 2.0 - TS. Nguyễn Quang Uy
59 trang 19 0 0 -
Bài giảng Công nghệ lập trình tích hợp: Chương 0 - TS. Nguyễn Quang Uy
9 trang 19 0 0 -
Bài giảng Công nghệ lập trình tích hợp: Chương 7 - TS. Nguyễn Quang Uy
39 trang 16 0 0 -
Bài giảng Công nghệ lập trình tích hợp: Chương 4.2 - TS. Nguyễn Quang Uy
19 trang 15 0 0 -
Bài giảng Công nghệ lập trình tích hợp: Chương 3 - TS. Nguyễn Quang Uy
38 trang 15 0 0 -
Bài giảng Công nghệ lập trình tích hợp: Chương 4.0 - TS. Nguyễn Quang Uy
40 trang 14 0 0 -
Bài giảng Công nghệ lập trình tích hợp: Chương 2.1 - TS. Nguyễn Quang Uy
28 trang 14 0 0 -
Bài giảng Công nghệ lập trình tích hợp: Chương 4.1 - TS. Nguyễn Quang Uy
25 trang 13 0 0 -
Bài giảng Công nghệ lập trình tích hợp: Chương 8 - TS. Nguyễn Quang Uy
42 trang 13 0 0