30/09/2018, 16:35

Mọi người cho em hỏi về Thread trong java

Chào mọi người !
Em đang học về Thread trong Java thì có gặp phải một vấn đề như sau : Ví dụ như e dùng 5 luồng để đọc file thì thường thì chỉ có 1 2 luồng chạy or các luồng có chạy nhưng không đều vậy có thuật toán hay cách nào để có thể giúp các luồng này chạy xử lý bằng nhau không ạ. Cảm ơn mọi người nhiều

Phạm Hoàng Tuấn viết 18:40 ngày 30/09/2018

Ví dụ như e dùng 5 luồng để đọc file

Là đọc 1 file hay đọc 5 file khác nhau e???

chạy xử lý bằng nhau không ạ

A k rành về Java nhưng a ngĩ khó có chuyện 5 luồng xử lý ngang nhau, đa tiểu trình chỉ giúp chúng ta "“trông như” đang thực hiện các tác vụ đồng thời, chứ bản chất bên trong luôn luôn có trước sau. Ví dụ tác vụ A khi chạy đến dòng lệnh n sẽ k dùng CPU nữa, mà đợi file load lên, lúc này CPU đang rảnh, dùng đa tiểu trình sẽ giúp e sử dụng dc CPU lúc này.

Nguyễn Minh Dũng viết 18:40 ngày 30/09/2018

Tại sao @ZigZac28 lại cần cho 5 luồng cùng đọc một file nhỉ? Làm như thế không nên đâu, bởi vì như thế dễ gây xung đột lắm.

Tuy nhiên @ZigZac28 có thể đưa code lên cho mọi người xem thử không?

ZigZac28 viết 18:52 ngày 30/09/2018

À e xin lỗi vì không nói rõ ở đây em đọc n file ạ,nghĩa là có nhiều luồng cứ tạo file liên tục rồi lại có nhiều luồng lấy để đọc ý ạ

ZigZac28 viết 18:40 ngày 30/09/2018

Em đã thử chia theo cứ đọc được 15 file 1 lần thì lại để nó sleep để cpu cấp phát luồng khác nhưng mà như thế e thấy nó chẳng khác tuần tự là mấy

Itachi Citus viết 18:49 ngày 30/09/2018

Bạn nên đọc file tuần tự thì sẽ tốt hơn nếu công việc đó không yêu cầu xử lý song song, vì việc chạy qua chạy lại các file có vị trí khác nhau trong ổ cứng sẽ khiến đầu đọc phải di chuyển liên tục -> làm giảm hiệu năng.

Bài liên quan
0