Thread là khái niệm quen thuộc với các bạn chuyên ngành nghiên cứu IT, mà lĩnh vực này được nhiều người cho là khá trừu tượng. Thread là gì và vai trò của nó trong hệ điều hành như thế nào, chúng ta hãy cùng tìm hiểu ở bài viết dưới đây nhé.
Thread là gì?
Thread (luồng) là một đơn vị cơ bản trong CPU, hiểu đơn giản Thread chính là một sub- process (tiến trình nhỏ). Thread được xem như đơn vị xử lý nhỏ nhất của máy tính với chức năng thực năng thực hiện một công việc riêng biệt. Thread không xa rời với process, process được hiểu là 1 quá trình hoạt động.


Lấy ví dụ đơn giản cho bạn dễ hình dung, khi bạn truy cập bất kì ứng dụng nào đã được cài đặt sẵn trên laptop, Powerpoint chẳng hạn, process chạy ứng dụng này bắt đầu được khởi tạo. Thread là một phần trong process, một process bao gồm nhiều thread và các thread này có thể hoạt động song song.
Vòng đời của 1 Thread
New: Thread được khởi tạo, chưa có dữ liệu và cũng chưa chạy. Bạn hoàn toàn có thể nhấn Pause hoặc Restart để dừng hoặc khởi tạo lại Thread.
Runnable: Luồng được cấp dữ liệu và có hiệu lực, có thể chạy luôn hoặc chuẩn bị chạy tùy thuộc vào hệ thống.
Waiting: Luồng đợi các luồng kế tiếp vô thời hạn.
Dead: Vòng đời của Thread kết thúc cũng là lúc tác vụ được hoàn thành.
Phân loại và cách tạo ra 1 Thread?
Thread được chia làm 2 loại cơ bản là Single- Threaded (Đơn luồng) và Multi- Threaded (Đa luồng). Mỗi luồng đều có những ưu điểm và nhược điểm riêng.
Single- Threaded: Một ứng dụng nhận nhiều lệnh giống nhau cùng một lúc, ví dụ như việc truy cập Cổng thông tin của sinh viên để đăng kí tín chỉ. Tình trạng màn hình của rất nhiều sinh viên luôn trong trạng thái loading suốt một thời gian dài là do hàng ngàn sinh viên cùng thực hiện thao tác đăng nhập vào hệ thống một lúc. Và thread cho phép sinh viên sau có thể truy cập được trong điều kiện sinh viên trước đã đăng nhập, đăng kí tín chỉ thành công và thoát ra. Mọi thứ diễn ra theo trình tự chứ không đồng thời.
Multi- Threaded: Phần lớn các ứng dụng trong máy tính đều chạy process và một process lại bao gồm nhiều luồng bên trong. Ví dụ như khi bạn kết nối máy in với máy tính, máy tính vừa nhận lệnh và chuyển sang máy in, bạn sẽ thấy tài liệu sau đó được in ra trong ít phút, máy tính vừa nhận file mới bạn vừa tải lên. Chính vì thế, đa luồng được ưa chuộng trong hệ điều hành hơn hẳn bởi rất nhiều lợi thế hơn đơn luồng.


Khả năng đáp ứng của đa luồng được đánh giá cao. Đó là khi một phần trong process tạm thời ‘’bị hỏng’’, các lệnh song song vẫn có thể khởi động và diễn ra. Đa luồng không làm gián đoạn quá trình, bạn chỉ cần load hoặc fix lại lệnh hỏng đó thôi, các lệnh còn lại vẫn chạy bình thường. Quá tuyệt phải không nào?
Đa luồng diễn ra việc chia sẻ tài nguyên giữa các thread, giúp tiết kiệm chi phí và thời gian. Đây là luồng phổ biến được đông đảo người dùng ưa chuộng và tích hợp trong hầu hết các thiết bị công nghệ thông dụng.
Tuy nhiên, vì xử lý nhiều luồng cùng một lúc nên mức độ phức tạp của việc xử lý tỉ lệ thuận theo số lượng luồng. Người dùng phải liên tục theo dõi để loại bỏ các luồng ‘’chết’’ hay còn gọi là các luồng không hoạt động.
Có 2 cách tạo ra Thread là kế thừa lớp Thread và tạo Thread từ giao diện Runnable. Bạn có thể tham khảo thêm trên các trang mạng để tạo ra Thread ưng ý nhất nhé.
Vai trò của Thread trong hệ điều hành
Người ta sử dụng Thread với 3 tính năng, mỗi tính năng Thread đều phát huy tối đa vai trò của mình.
Thread liên quan mật thiết đến các tác vụ, khi bạn muốn thực hiện nhiều tác vụ đồng thời là lúc bạn cần đến Thread. Sống ở thành phố rộng lớn, việc tìm địa chỉ ai đó sẽ dễ dàng hơn khi điện thoại của bạn tải sẵn ứng dụng Google Maps. Bạn có để ý không, khi bạn nhập địa chỉ vào ô tìm kiếm, dù chưa nhập hết dữ liệu, ứng dụng đã tự động cập nhật các gợi ý liên quan. Ở đây, có ít nhất 2 Thread đang hoạt động song song, 1 Thread đảm nhiệm vai trò tiếp nhận dữ liệu bạn nhập, 1 Thread hoạt động nhằm tìm kiếm các địa điểm đúng hoặc gần đúng với lệnh.
Bạn muốn khởi động nhiều Thread một lúc, nhưng không muốn chúng hoạt động cùng 1 lúc. Bạn có thể thao tác để Thread kế tiếp hoạt động sau khi Thread trước đó kết thúc nhiệm vụ của mình.
Bạn đã bao giờ download một ứng dụng chiếm dung lượng lớn trong một thời gian khá dài chưa? Chắc chắn rồi đúng không? Thời gian bạn chờ đợi ứng dụng được tải về và cài đặt thành công cũng là quãng thời gian hoạt động của không ít Thread đó.
Thread được nhắc tới rất nhiều trong Java, thông qua việc sử dụng các thiết bị công nghệ như điện thoại, máy tính,…chúng ta khởi động và chạy rất nhiều Thread trong một ngày. Có thể thấy Thread có khả năng xử lý nguồn dữ liệu khổng lồ và tạo ra vô số trải nghiệm tốt cho người dùng.