ĐA LUỒNG<br />
Multithreading<br />
<br />
duytrung.tcu@gmail.com<br />
<br />
Nội dung bài học<br />
• Thread<br />
• Vòng đời của thread<br />
<br />
• Multithreading<br />
• Xếp lịch chạy cho thread<br />
• Thread safe<br />
• Deadlock<br />
• Lock và synchronized<br />
<br />
• SwingWorker<br />
duytrung.tcu@gmail.com<br />
<br />
Thread là gì<br />
• Thread /θred/<br />
• Thread là một tiến trình hạng nhẹ (lightweight process), là<br />
luồng logic tuần tự các lệnh chương trình, với một điểm bắt đầu<br />
và một điểm kết thúc<br />
• Trong vòng đời của mình, thread chỉ được thực thi một lần duy<br />
nhất<br />
• Bản thân thread không phải là một chương trình, nó không chạy<br />
độc lập mà nằm trong một chương trình hoàn chỉnh<br />
duytrung.tcu@gmail.com<br />
<br />
Thread là gì<br />
• Một chương trình có thể là đơn luồng (single-thread) hoặc đa<br />
luồng (multi-thread)<br />
<br />
• Đơn luồng: 1 điểm vào và 1 điểm ra<br />
• Đa luồng: 1 điểm bắt đầu ở main(), sau đó là nhiều điểm vào<br />
và nhiều điểm ra chạy song hành với main()<br />
<br />
duytrung.tcu@gmail.com<br />
<br />
Đa nhiệm (Multitasking / Multi-processing)<br />
• Đa số các HĐH hiện nay là đa nhiệm<br />
• Thực hiện đồng thời nhiều công việc dựa trên chia sẻ tài<br />
nguyên: CPU, bộ nhớ, các kênh vào ra…<br />
• Với CPU đơn nhân: chỉ một tác vụ được thực hiện tại một thời<br />
điểm, xếp lịch trên các khe thời gian (time slice)<br />
<br />
duytrung.tcu@gmail.com<br />
<br />