1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài 7: Giới thiệu vềThreads pptx

34 217 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 34
Dung lượng 605 KB

Nội dung

Giới thiệu về Threads Bài 07 Bài 07 2 / 22 Nội dung chính  Định nghĩa threads  Định nghĩa về multithreading  Lợi ích của multithreading  Tạo threads  Thảo luận về trạng thái của Threads  Quản lý threads  Thiết lập thuộc tính cho threads  Tìm hiểu về daemon thread Bài 07 3 / 22 Multitasking & Multithreading  Multitasking là khả năng chạy 1 or nhiều chương trình cùng lúc.  Operating system sẽ điều khiển bằng cách lập lịch cho các chương trình đó.  Multithreading là khả năng thực hiện các phần khác nhau của một chương trình một cách độc lập nhau. Bài 07 4 / 22 Thread  Thread là một đoạn mã nhỏ nhất mà có thể thực thi được, nó thực thi một nhiệm vụ cụ thể nào đó.  Một ứng dụng có thể chia làm nhiều nhiệm vụ, mỗi nhiệm vụ có thể gán cho một thread  Nhiều thread cùng thực hiện đồng thời, gọi là Multithreading.  Các thread có vẻ như thực hiện đồng thời, nhưng thực tế ko phải vậy… Bài 07 5 / 22 Ưu điểm của Multithreading  Multithreading có chi phí thấp hơn multitasking (về không gian, t/g)  Trong multitasking, các tiến trình chạy trên các địa chỉ riêng biệt  Các thread trong multithreading có thể chia sẻ cùng không gian bộ nhớ.  Các tiến trình trong multitasking gọi nhau phải chịu chi phí lơn hơn các thread trong multithreading.  Multithreading cho phép chúng ta thiết kế chương trình hiệu quả hơn mà sử dụng ít tài nguyên CPU  Multithreading còn cho phép chúng ta điều khiển cho các thread sleep một t/g trong khi các thread khác vẫn hoạt động mà ko làm cho hệ thống bị pause. Bài 07 6 / 22 ứng dụng của thread  Tính toán 2 phép tính đồng thời  Vừa nghe nhạc, vừa xem ảnh đồng thời  Hiển thị cùng lúc nhiều ảnh trên màn hình Bài 07 7 / 22 Tạo threads  Chương trình sẽ bị ngắt quãng khi thread main bị stop.  Main thread có thể được điều khiển thông qua đối tượng thread.  Tham chiếu đến main thread có thể nhận được bằng cách gọi method currentThread() của lớp Thread.  Khi chương trình java thực hiện thì luôn có một thread chạy đó là thread main Bài 07 8 / 22 Tạo thread  Đối tượng thread có thể được tạo theo 2 cách:  Định nghĩa một lớp là lớp con của lớp Thread được định nghĩa trong gói java.lang  class mythread extends Thread  Định nghĩa một lớp là implements của Runnable interface.  class mythread implements Runnable Bài 07 9 / 22 Tạo thread  Khi phương thức start() được gọi, thì tài nguyên hệ thống sẽ được cấp phát cho thread đó và nó sẽ được lập lịch để chạy.  Sau đó phải gọi phương thức run()  Sau khi một thread mới được khởi tạo, chúng ta có thể gọi phương thức start()để start một thread, trái lại nó sẽ là một đối tượng thread rỗng, ko được cấp phát tài nguyên. Mythread t = new Mythread(); t.start(); Bài 07 10 / 22 public void run() { while(true) { try { System.out.println("This is the child thread"); Thread.sleep(500); } catch(InterruptedException e) { } } } } Tạo thread Ví dụ Tạo một thread bằng cách kế thừa lớp Thread. class MyThread extends Thread { public static void main(String args[]) { MyThread Objex = new MyThread(); Objex.create(); System.out.println("This is the main thread"); } public void create() { Thread Objth = new Thread(this); Objth.start(); } Output [...]... Thread.sleep(500); { } Thread Objth = new Thread(this); catch(InterruptedException e) Objth.start(); {} } } } } Output Bài 07 11 / 22 Trạng thái của Thread  Born: một thread vừa được tạo ra thì nó ở trạng thái born  Ready: Sau khi thread được tạo, nó ở trạng thái sẵn sàng đợi phương thức start() được gọi Bài 07 12 / 22 Trạng thái của thread   Running: Thread ở trạng thái running khi phương thực start đã được... sleeping một khoảng thời gian Bài 07 13 / 22 Trạng thái của thread  Waiting: Thread sẽ ở trạng thái này khi phương thức wait() được gọi Nó được sử dụng khi 2 hay nhiều thread chạy cùng nhau  Blocked: thread rơi vào trạng thái này khi nó đợi dữ liệu như thao tác input/output  Dead: thread rơi vào trạng thái này khi phương thức run() kết thúc hoặc phương thức stop() được gọi Bài 07 14 / 22 Các trạng thái... được gọi Bài 07 14 / 22 Các trạng thái của thread New Thread (BORN) READY SLEEPING RUNNING WAITING BLOCKED DEAD Bài 07 15 / 22 Một số method của lớp thread  final boolean isAlive(): trả về giá trị true nếu thread còn tồn tại  final String getName(): trả về tên của thread  void start(): Bài 07 16 / 22 Một số method của lớp thread  final void join() throws InterruptedException: đợi cho đến khi thread... static void yield(): thread hiện tại sẽ tạm ngừng để thread khác chạy  final void setName(String name): Bài 07 17 / 22 Một số method của lớp thread  final boolean isDaemon(): kiểm tra xem có phải là Daemon thread ko  static int activeCount(): đếm số thread đang hoạt động  static void sleep(): Bài 07 18 / 22 Quản lý thread  Thread có thể được xét mức ưu tiên khác nhau (là các hằng của lớp Thread)... nó sẽ thoát Bài 07 20 / 22 Daemon threads   Chúng ta cũng có thể thiết lập cho một thread là Daemon thread nếu muốn chương trình chính đợi cho đến khi thread kết thúc Thread có 2 phương thức để làm việc với Daemon thread:   public final void setDaemon(boolean value) : Gán một Thread thành Daemon thread public final boolean isDaemon() : Kiểm tra xem 1 thread có phải là Daemon thread ko? Bài 07 21... hiện thời thành không ngắt Bài 07 25 / 22 Đồng bộ luồng  Khi nhiều luồng cùng truy xuất đến một nguồn tài nguyên -> cần đồng bộ    Ví dụ: đọc/ghi trên cùng 1 file, sửa đổi trên cùng 1 đối tượng Trong trường hợp này dữ liệu cần phải được đồng bộ, đảm bảo được trạng thái an toàn Để đảm bảo tài nguyên chia sẻ chỉ được truy xuất bởi một luồng -> ta sử dụng cơ chế synchronization Bài 07 26 / 22 Đồng bộ... sẽ được mở khoá Bài 07 27 / 22 Đồng bộ luồng    Trong khi thực thi phương thức synchronized, một tuyến có thể gọi wait() để chuyển sang trạng thái chờ cho đến khi một điều kiện nào đó xảy ra Khi thực hiện xong công việc trên đối tượng, một tuyến cũng có thể thông báo (notify) cho các tuyến khác đang chờ để truy nhập đối tượng Deadlock: Tuyến A chờ tuyến B và tuyến B cũng chờ tuyến A Bài 07 28 / 22... sharedBuffer = shared; System.out.println( getName() + " finished."); } } }} Bài 07 31 / 22 Kết quả khi không đồng bộ Producer writes 1 Producer writes 2 Consumer reads 2 Producer writes 3 Producer writes 4 Consumer reads 4 Producer writes 5 Producer finished Consumer reads 5 Consumer reads 5 Consumer reads 5 Consumer finished Bài 07 32 / 22 Vídụvề P-C: đồng bộ class Buffer // Thiết kế lại lớp Buffer... } notify(); return buffer; buffer = value; } writable = false; } notify(); } Bài 07 33 / 22 Kết quả khi đồng bộ Producer writes 1 Consumer reads 1 Producer writes 2 Consumer reads 2 Producer writes 3 Consumer reads 3 Producer writes 4 Consumer reads 4 Producer writes 5 Producer finished Consumer reads 5 Consumer finished Bài 07 34 / 22 ... value is – value is Giá trị mặc định là: NORM_PRIORITY 2 phương thức để thiết lập priority:  final void setPriority(int newp): thay đổi mức ưu tiên hiện tại  final int getPriority(): trả về mức ưu tiên Bài 07 19 / 22 Daemon threads  2 loại thread trong java:   User threads: đc tạo bởi người dùng Daemon threads: các thread làm việc dưới background và nó cung cấp dịch vụ cho các thread khác     . Giới thiệu về Threads Bài 07 Bài 07 2 / 22 Nội dung chính  Định nghĩa threads  Định nghĩa về multithreading  Lợi. hệ thống bị pause. Bài 07 6 / 22 ứng dụng của thread  Tính toán 2 phép tính đồng thời  Vừa nghe nhạc, vừa xem ảnh đồng thời  Hiển thị cùng lúc nhiều ảnh trên màn hình Bài 07 7 / 22 Tạo threads  Chương. kết thúc hoặc phương thức stop() được gọi. Bài 07 15 / 22 Các trạng thái của thread New Thread (BORN) READY RUNNING DEAD SLEEPING WAITING BLOCKED Bài 07 16 / 22 Một số method của lớp thread  final

Ngày đăng: 13/07/2014, 13:20

TỪ KHÓA LIÊN QUAN

w