Những điểm giống và khác nhau giữa Đa Luồng và Đa Tiến Trình
3 posters
Trang 1 trong tổng số 1 trang
Những điểm giống và khác nhau giữa Đa Luồng và Đa Tiến Trình
*Giống nhau:
- Đều có thông tin trạng thái
- Luồng còn được gọi là tiến trình nhẹ
- Nhiều luồng hoặc nhiều tiến trình có thể liên quan đến một chu trình
- Chia sẻ tài nguyên cho nhau, tăng tốc tính toán, đảm bảo tính đơn thể
*Khác nhau:
- Do luồng cùng vận hành trong 1 vùng địa chỉ, vì vậy dễ dùng chung tài nguyên hơn đa tiến trình
- Do luồng chung tài nguyên với luồng cha nên việc tạo lập và chuyển đổi ngữ cảnh cũng nhanh hơn tiến trình
- Lập trình đa luồng thì dễ hơn lập trình đa tiến trình
- Đều có thông tin trạng thái
- Luồng còn được gọi là tiến trình nhẹ
- Nhiều luồng hoặc nhiều tiến trình có thể liên quan đến một chu trình
- Chia sẻ tài nguyên cho nhau, tăng tốc tính toán, đảm bảo tính đơn thể
*Khác nhau:
- Do luồng cùng vận hành trong 1 vùng địa chỉ, vì vậy dễ dùng chung tài nguyên hơn đa tiến trình
- Do luồng chung tài nguyên với luồng cha nên việc tạo lập và chuyển đổi ngữ cảnh cũng nhanh hơn tiến trình
- Lập trình đa luồng thì dễ hơn lập trình đa tiến trình
HUYNHDUCANHI12A- Tổng số bài gửi : 31
Join date : 07/03/2012
Re: Những điểm giống và khác nhau giữa Đa Luồng và Đa Tiến Trình
cho mình ví dụ minh họa được không bạn
nguyenhuutho- Tổng số bài gửi : 31
Join date : 09/03/2012
Đa Tiến Trình _ Thread
Mục tiêu của Thread là để tạo ra nhiều tiểu trình chạy song song với nhau để thực hiện 1 số việc nào đó. Để làm vậy, cần tạo 1 lớp như sau:
1. Implement interface Runnable
2. Extends lớp Thread và overide hàm run().
ví dụ:
class Apple extends Thread {
void run() {}
}
public class test{
public void main(){
Apple a = new Apple();
a.start();
}
}
Lưu ý là: hàm run() chỉ là để chạy tiểu trình sẽ thực hiện song song, còn để gọi nó thì phải xài hàm start(). Còn ko gọi, mà gọi run() trực tiếp thì nó sẽ ko chạy song song mà nó sẽ chạy như 1 hàm bình thường, tức là chỉ có 1 tiểu trình chạy mà thôi chứ ko phải 2.
Ngoài ra, bạn cũng có thể tìm hiểu về hàm join(), sleep(), wait(), notify(), yeild() và có thể là setPriority()...
Mình chỉ biết tí xíu nhiêu đó, hi vọng giúp ích được cho bạn.
1. Implement interface Runnable
2. Extends lớp Thread và overide hàm run().
ví dụ:
class Apple extends Thread {
void run() {}
}
public class test{
public void main(){
Apple a = new Apple();
a.start();
}
}
Lưu ý là: hàm run() chỉ là để chạy tiểu trình sẽ thực hiện song song, còn để gọi nó thì phải xài hàm start(). Còn ko gọi, mà gọi run() trực tiếp thì nó sẽ ko chạy song song mà nó sẽ chạy như 1 hàm bình thường, tức là chỉ có 1 tiểu trình chạy mà thôi chứ ko phải 2.
Ngoài ra, bạn cũng có thể tìm hiểu về hàm join(), sleep(), wait(), notify(), yeild() và có thể là setPriority()...
Mình chỉ biết tí xíu nhiêu đó, hi vọng giúp ích được cho bạn.
DangLeHieu(I102C)- Tổng số bài gửi : 18
Join date : 05/03/2012
Đa Tiến Trình _ Thread
join(): nếu a gọi b.join() thì khi b thực hiện xong công việc thì a mới chạy tiếp.
wait(): nếu a gọi b.wait() thì a sẽ tạm dừng và đợi cho b khi nào làm xong cái trò gì đó, gọi notify() hay notifyAll() thì a mới chạy tiếp.
notify(): cái này dùng để báo mấy thread khác đang đợi được phép chạy tiếp. Lưu ý là wait() với notify() phải ở trong một khối synchronize mới chịu chạy.
sleep(): nếu a chạy sleep() thì nó sẽ dừng lại bao nhiêu giây rồi chạy tiếp.
yeild(): nếu a gọi lệnh này, nó từ trạng thái đang chạy sẽ bị quánh bật về trạng thái sẵn sàng, dùng lệnh này để cho mấy thread khác có cơ hội chạy. Nhưng nó chỉ có tác dụng với các thread có cùng độ ưu tiên.
setPriority(): chỉ định độ ưu tiên cho một thread. thread có độ ưu tiên cao hơn sẽ được chạy và chiếm cpu nhiều hơn.
wait(): nếu a gọi b.wait() thì a sẽ tạm dừng và đợi cho b khi nào làm xong cái trò gì đó, gọi notify() hay notifyAll() thì a mới chạy tiếp.
notify(): cái này dùng để báo mấy thread khác đang đợi được phép chạy tiếp. Lưu ý là wait() với notify() phải ở trong một khối synchronize mới chịu chạy.
sleep(): nếu a chạy sleep() thì nó sẽ dừng lại bao nhiêu giây rồi chạy tiếp.
yeild(): nếu a gọi lệnh này, nó từ trạng thái đang chạy sẽ bị quánh bật về trạng thái sẵn sàng, dùng lệnh này để cho mấy thread khác có cơ hội chạy. Nhưng nó chỉ có tác dụng với các thread có cùng độ ưu tiên.
setPriority(): chỉ định độ ưu tiên cho một thread. thread có độ ưu tiên cao hơn sẽ được chạy và chiếm cpu nhiều hơn.
DangLeHieu(I102C)- Tổng số bài gửi : 18
Join date : 05/03/2012
Multi - Process và Multi - Thread
Multi-process thường sẽ "nặng" hơn multi-thread về mặt resource.
Khác nhau chỗ nào: process khác với thread chỗ nào?
Xu hướng: tuỳ nhu cầu hoàn cảnh cụ thể. Multi-process thì chết 1 process thì không ảnh hưởng tới process khác, nhưng sẽ tiêu tốn resource hơn. Multi-thread thì đỡ tốn resource hơn nhưng 1 thread mà có lỡ crash thì cũng có thể làm cả process cha "teo" the
Khác nhau chỗ nào: process khác với thread chỗ nào?
Xu hướng: tuỳ nhu cầu hoàn cảnh cụ thể. Multi-process thì chết 1 process thì không ảnh hưởng tới process khác, nhưng sẽ tiêu tốn resource hơn. Multi-thread thì đỡ tốn resource hơn nhưng 1 thread mà có lỡ crash thì cũng có thể làm cả process cha "teo" the
DangLeHieu(I102C)- Tổng số bài gửi : 18
Join date : 05/03/2012
Similar topics
» Thảo luận Bài 5
» Thảo luận Bài 5
» So sánh sự giống nhau và khác nhau giữa Luồng và tiến trình
» Thảo luận Bài 5
» Sự giống và khác nhau giữa Chương trình , Tiến trình và Luồng
» Thảo luận Bài 5
» So sánh sự giống nhau và khác nhau giữa Luồng và tiến trình
» Thảo luận Bài 5
» Sự giống và khác nhau giữa Chương trình , Tiến trình và Luồng
Trang 1 trong tổng số 1 trang
Permissions in this forum:
Bạn không có quyền trả lời bài viết