Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 80 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
80
Dung lượng
496,18 KB
Nội dung
Chapter 6 Threads in Java 1 Java Simplified / Session 22 / 2 of 45 Multitasking vs MultiThreading Define a thread Define multithreading List benefits of multithreading Create threads Discuss thread states Manage threads Explain how to set thread priorities Describe a daemon thread Objectives 2 Java Simplified / Session 22 / 3 of 45 Multitasking: là khả năng của một OS cho phép chạy nhiều chương trình đồng thời trên một CPU (đơn nhân) Thực hiện bằng cách phân bổ thời gian chuyển hoạt động từ một chương này sang chương trình khác (ms). Process Khi chạy 1 ứng dụng (program) OS sẽ cấp phát riêng cho nó bộ nhớ và các tài nguyên khác -> 1 process. Các bộ nhớ và các tài nguyên của 1 process chỉ nó mới được phép truy nhập Thread: Một process có thể có một hoặc nhiều tác vụ khác nhau và có thể chạy đồng thời. Mỗi tác vụ là một thread Một số khái niệm 3 Java Simplified / Session 22 / 4 of 45 Thread là đơn vị nhỏ nhất trong mã chương trình có thể thực thi một công việc riêng biệt. Thread hình thành gồm: một định danh luồng (thread ID), một bộ đếm chương trình, tập thanh ghi và ngăn xếp. Nó chia sẻ với các luồng khác thuộc cùng một tiến trình phần mã, phần dữ liệu, và tài nguyên hệ điều hành như các tập tin đang mở và các tín hiệu. Thread 4 Java Simplified / Session 22 / 5 of 45 Truyền thống: Một tiến trình có một luồng điều khiển đơn: Chỉ có một tuyến đoạn đang chạy tại một thời điểm cho trước. Các tuyến đoạn khác phải chờ. Hệ điều hành duy trì một hàng đợi các tuyến đoạn và phân bổ thời gian CPU cho chúng Gây lãng phí CPU và bộ nhớ Hiện đại: Một tiến trình có nhiều luồng điều khiển, nó có thể thực hiện nhiều hơn một tác vụ tại một thời điểm. Khi đó, các tuyến đoạn có thể truy xuất tới tài nguyên dùng chung để cùng làm việc hợp tác với nhau => MultiThreads MultiThread 5 Java Simplified / Session 22 / 6 of 45 Single vs. Multi-Threaded 6 Java Simplified / Session 22 / 7 of 45 Step 1 Step 2 … Step n Step 1 Step 2 … Step n Step 1 Step 2 … Step n Single vs. Multi-Threaded 7 • A process that is made of one thread is known as single-threaded process. • A process that creates two or more threads is called a multithreaded process. Java Simplified / Session 22 / 8 of 45 Applications of Multithread Web Browser IE: Thread hiện thị hình ảnh, văn bản; Thread lấy dữ liệu từ mạng… Word: Thread hiện thị đồ họa; Thread đọc sự nhấn phím của NSD; Thread kiểm tra chính tả… 8 Java Simplified / Session 22 / 9 of 45 Thread cũng đóng một vai trò quan trọng trong hệ thống lời gọi thủ tục xa (RPC). Khi một trình phục vụ nhận một thông điệp, nó phục vụ thông điệp dùng một thread riêng. Điều này cho phép phục vụ nhiều yêu cầu đồng hành. Ứng dụng mạng trong lập trình mạng Applications of threads 9 Java Simplified / Session 22 / 10 of 45 Sự đáp ứng: đa luồng một ứng dụng giao tiếp cho phép một chương trình tiếp tục chạy thậm chí nếu một phần của nó bị khóa (wait) hay đang thực hiện một thao tác dài, do đó gia tăng sự đáp ứng đối với người dùng Chia sẻ tài nguyên: Mặc định, các luồng chia sẻ bộ nhớ và các tài nguyên của các quá trình mà chúng thuộc về. Thuận lợi của việc chia sẻ là nó cho phép một ứng dụng có nhiều hoạt động của các luồng khác nhau nằm trong cùng không gian địa chỉ. Benefits of Multithreading 10 [...]... tạo luồng và lập thời biểu được thực hiện trong không gian người dùng mà không cần sự can thiệp của nhân Java Simplified / Session 22 / 13 of 45 Thread in Java Java là một trong số nhỏ ngôn ngữ cung cấp sự hỗ trợ tại cấp ngôn ngữ cho việc tạo và quản lý luồng Tuy nhiên, vì các luồng được quản lý bởi máy ảo Java (JVM), không bởi một thư viện cấp người dùng hay nhân Một chương trình Java có ít nhất... System.out.println(“The current thread after name change:”+ t); … } Java Simplified / Session 22 / 22 of 45 Create Thread Có thể 2 cách: Extend the java. lang.Thread class override the run() method of the Thread class Implement the java. lang.Runnable interface define the run() method Java Simplified / Session 22 / 23 of 45 Dùng Thread class Lớp java. lang.Thread cung cấp các phương thức quản lý, kiểm soát... RUNNING WAITING BLOCKED DEAD Java Simplified / Session 22 / 20 of 45 Main Thread • Mỗi khi chạy một ứng dụng trong java thì đã có một thread • Đây là thread chính, nó thực thi các dòng lệnh trong method : public static void main Đây là một điểm nhập bắt buộc cho mọi ứng dụng độc lập main thread : Tuyến đoạn đầu tiên thực hiện trong ứng dụng đa tuyến đoạn, được tạo ra tự động Java Simplified / Session... nhân Một chương trình Java có ít nhất 1 Thread, nó được gọi thực hiện khi phương thức main chạy (như một luồng đơn trong máy ảo Java) -> Main Thread Ngoài ra, Java cung cấp các lệnh cho phép người phát triển tạo và thao tác các luồng điều khiển bổ sung trong chương trình Java Simplified / Session 22 / 14 of 45 Six states of Thread Every Thread has a state and a Thread can be in one of these six... chỉ có thể chạy trên một CPU Đa luồng trên một máy nhiều CPU gia tăng tính đồng hành Java Simplified / Session 22 / 11 of 45 Multithreading vs multitasking Multithreading requires less overhead than multitasking In multitasking, các tiến trình chạy trên các không gian địa chỉ của chúng và khác nhau giữa các tiến trình đòi hỏi nhiều tài nguyên của hệ thống (cả ram và CPU) In multithreading các... which a thread has exited Java Simplified / Session 22 / 15 of 45 The New Thread State Tạo tuyến đoạn mới: Thread newThread = new Thread(“threadName“); Kích hoạt đoạn tuyến khởi động newThread.start(); Khi tuyến đoạn ở trạng thái New thì chỉ có phương thức start() được gọi, nếu không sẽ có ngoại lệ IllegalThreadStateException được đưa ra Java Simplified / Session 22 / 16 of 45 The Runnable thread... có thể chia sẻ cùng không gian địa chỉ Multithreading cho phép viết các chương trình có hiệu quả cao với sự tận dụng CPU là tối đa bằng cách duy trì thời gian trễ là tối thiểu Java Simplified / Session 22 / 12 of 45 Hai loại Thread Thread nhân: Được hỗ trợ trực tiếp bởi hệ điều hành Nhân thực hiện việc tạo luồng, lập thời biểu, và quản lý không gian nhân Thread người dùng: Được hỗ trợ dưới... nhớ và các tài nguyên cho việc tạo các quá trình là rất đắt Vì các luồng chia sẻ tài nguyên của quá trình mà chúng thuộc về nên nó kinh tế hơn để tạo và chuyển ngữ cảnh giữa các luồng Sử dụng kiến trúc đa xử lý: các lợi điểm của đa luồng có thể phát huy trong kiến trúc đa xử lý, ở đó mỗi luồng thực thi song song trên một bộ xử lý khác nhau Một quá trình đơn luồng chỉ có thể chạy trên một CPU... static void main(String args[]) { (new HelloThread()).start(); } } Java Simplified / Session 22 / 26 of 45 Some methods of thread class void start(): Gọi một thread khởi động final boolean isAlive(): kiểm tra thread còn chạy không final String getName(): trả về tên của thread final void setName(String name): thiết đặt tên cho thread Java Simplified / Session 22 / 27 of 45 Thread ex class MyThread... nhiều tuyến đoạn, vì vậy một số tuyến đoạn tương tranh có thể sử dụng chung mã và thao tác trên cùng dữ liệu Java Simplified / Session 22 / 35 of 45 Dùng Interface Runnable class C2 implements Runnable { public C2() {Thread t = new Thread(this);} public void run(){ } } Java Simplified / Session 22 / 36 of 45 . Chapter 6 Threads in Java 1 Java Simplified / Session 22 / 2 of 45 Multitasking vs MultiThreading Define a thread Define multithreading List benefits of multithreading Create threads Discuss. chung để cùng làm việc hợp tác với nhau => MultiThreads MultiThread 5 Java Simplified / Session 22 / 6 of 45 Single vs. Multi-Threaded 6 Java Simplified / Session 22 / 7 of 45 Step 1 Step. ảo Java (JVM), không bởi một thư viện cấp người dùng hay nhân. Một chương trình Java có ít nhất 1 Thread, nó được gọi thực hiện khi phương thức main chạy (như một luồng đơn trong máy ảo Java)