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

Chương 9: Lập trình MultiThread

Chia sẻ: Vo Minh Tu | Ngày: | Loại File: PDF | Số trang:33

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

Tham khảo tài liệu 'chương 9: lập trình multithread', Mỗi process thi hành một ứng dụng riêng có một không gian địa chỉ và một không gian trạng thái riêng,các process liên lạc với nhau thông qua hệ điều hành tập tin mạng.

Chủ đề:
Lưu

Nội dung Text: Chương 9: Lập trình MultiThread

  1. Chương 9: L p trình MultiThread GVLT: Tr n Anh Dũng 1
  2. N i dung Gi i thi u ða nhi m và ña tuy n T o l p và s d ng tuy n L p Thread Giao ti p Runnable ð ng b hóa các tuy n Tuy n ma Nhóm tuy n Bài t p 2
  3. Gi i thi u (1) H ñi u hành ña nhi m c ñi n: ðơn v cơ b n s d ng CPU là process. Process là m t ño n chương trình ñ c l p ñã ñư c n p vào b nh . M i process thi hành m t ng d ng riêng, có m t không gian ñ a ch và m t không gian tr ng thái riêng. Các process liên l c v i nhau thông qua h ñi u hành, t p tin, m ng. 3
  4. Gi i thi u (2) H ñi u hành ña nhi m hi n ñ i, h tr Thread: ðơn v cơ b n s d ng CPU là thread. Thread m t ño n các câu l nh ñư c thi hành. M i process có m t không gian ñ a ch và nhi u thread ñi u khi n. M i thread có b ñ m chương trình, tr ng thái các thanh ghi và ngăn x p riêng. 4
  5. ða nhi m (1) ða nhi m – Multitasking: Là k thu t cho phép nhi u công vi c ñư c th c hi n cùng m t lúc trên máy tính. N u có nhi u CPU, các công vi c có th ñư c th c hi n song song trên t ng CPU. Trong trư ng h p nhi u công vi c cùng chia s m t CPU, t ng ph n c a m i công vi c s ñư c CPU th c hi n xen k . 5
  6. ða nhi m (2) Hai k thu t ña nhi m cơ b n: ða ti n trình (Process-based multitasking): Nhi u chương trình ch y ñ ng th i. M i chương trình có m t vùng d li u ñ c l p. ða tuy n (Thread-based multitasking): M t chương trình có nhi u tuy n cùng ch y ñ ng th i. Các tuy n dùng chung vùng d li u c a chương trình. 6
  7. Tuy Tuy n và ña tuy n Tuy n là m ch thi hành ñ c l p c a m t tác v trong chương trình. M t chương trình có nhi u tuy n th c hi n cùng lúc g i là ña tuy n. 7
  8. Thread M t thread có th là m t trong b n tr ng thái sau: Running: M t thread ñang ñư c th c thi. Suspended: Vi c th c thi b t m d ng và có th ph c h i t i th i ñi m d ng Blocked: M t tài nguyên không th ñư c truy c p b i vì nó ñang ñư c s d ng b i m t thread khác. Terminated: Vi c th c thi b ng ng h n và không th ph c h i. 8
  9. Multithread Là kh năng làm vi c v i nhi u thread (Multithread) Chuyên s d ng cho vi c th c thi nhi u công vi c ñ ng th i Gi m th i gian r i c a h th ng ñ n m c th p nh t. Main Thread start start start Thread A Thread B Thread C Các thread có th chuy n ñ i d li u v i nhau 9
  10. Vòng ñ i c a Thread start new notify, notifyAll, runnable new IO complete, sleep expired, yield, join complete scheduler time slice running blocked IO, sleep, terminate wait, join dead 10
  11. T o Thread (1) Kh i d ng các thread b ng vi c s d ng interface Runnable ho c class Thread. Nghĩa là thread ñư c t o ph i k th a t class Thread ho c tri n khai interface Runnable. Có hai cách ñ t o thread Th a k t l p java.lang.Thread Cài ñ t giao ti p java.lang.Runnable 11
  12. T o Thread (2) M t s method thông d ng ñư c ñ nh nghĩa trong class Thread. void start() 1 «interface» Runnable void stop() +run() String getName()/void setName(String) int getPriority() Thread void sleep(long mili) +currentThread() : Thread +isInterrupted() : bool +sleep(in millis : long) : long boolean isAlive() +yield() +isAlive() void yield() //như ng +join() +interrupt() +start() +stop() 12
  13. Main thread (1) M i chương trình Java có m t thread, th m chí n u b n không t o ra b t kỳ thread nào. Thread này ñư c g i là main thread. Main thread sinh ra các thread mà b n t o ra. Nh ng thread ñó g i là child thread. Main thread thông thư ng là thread cu i cùng k t thúc vi c th c thi. 13
  14. Main thread (2) Ví d : class Demo { public static void main (String args[] ) { Thread t = Thread.currentThread(); System.out.println("Current thread: " + t); t.setName("Demo Thread"); System.out.println("Renamed Thread: " + t); } } 14
  15. T o tuy n K th a t Thread (1) 15
  16. T o tuy n K th a t Thread (2) 16
  17. T o tuy n s d ng Runnable 17
  18. Ví d ña tuy n (1) public class MyThread implements Runnable{ String threadName; MyThread(String name){ threadName = name; Thread t = new Thread(this, threadName); System.out.println("Thread created: " + t); t.start(); } public void run(){ try{ for(int i=0;i
  19. Ví d ña tuy n (2) public class DemoMultiThread{ public static void main(String[] args){ new MyThread("TheFirstThread"); new MyThread("TheSecondThread"); try{ for(int i=0;i
  20. ð ưu tiên – PRIORITY ð ưu tiên? Trong java, các tuy n ñư c t o ra có ñ ưu tiên t Thread.MIN_PRIORITY ñ n Thread.MAX_PRIORITY Tuy n có ñ ưu tiên càng cao thì càng s m ñư c th c hi n và hoàn thành. ưu tiên m c ñ nh ca các tuy n là ð Thread.NORM_PRIORITY M t tuy n m i s th a k ñ ưu tiên t tuy n t o ra nó. ð t ñ ưu tiên cho m t thread: setPriority(int) Xác ñ nh ñ ưu tiên c a thread: getPriority() 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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