Có cách nào để các luồng chạy xử lý bằng nhau không?

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

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

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.

2 Likes

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?

1 Like

À 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 ý ạ

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 :pensive:

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.

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?