Sự khác biệt giữa Runnable và Thread

Mục lục:

Sự khác biệt giữa Runnable và Thread
Sự khác biệt giữa Runnable và Thread

Video: Sự khác biệt giữa Runnable và Thread

Video: Sự khác biệt giữa Runnable và Thread
Video: Java Cơ Bản - Thread khác nhau giữa kế thừa Thread và Runable - JMaster.io 2024, Tháng mười hai
Anonim

Sự khác biệt chính - Runnable vs Thread

Một chương trình đang thực thi được gọi là một quá trình. Quá trình này có thể được chia thành nhiều quá trình con. Ví dụ, Microsoft Word là một quy trình. Đồng thời, nó kiểm tra lỗi chính tả và ngữ pháp. Đó là một quy trình con. Các quy trình con này được gọi là các luồng. Đa luồng là quá trình thực hiện đồng thời nhiều luồng. Các ứng dụng phân luồng có thể được xây dựng bằng các ngôn ngữ lập trình khác nhau. Runnable và Thread được liên kết với lập trình Java. Có hai phương pháp trong Java để tạo luồng bằng cách triển khai giao diện Runnable hoặc mở rộng lớp Thread. Khi triển khai Runnable, nhiều luồng có thể chia sẻ cùng một đối tượng luồng trong khi ở lớp Mở rộng luồng, mỗi luồng có một đối tượng duy nhất được liên kết với nó. Đó là sự khác biệt chính giữa Runnable và Thread.

Runnable là gì?

Một chuỗi đi qua một số trạng thái. “Mới” là phần bắt đầu của vòng đời luồng. Sau khi phương thức start () gọi trên một luồng mới, nó có thể chạy được. Nếu bộ lập lịch luồng chọn luồng, nó sẽ chuyển sang trạng thái đang chạy. Tiểu trình đang chờ trạng thái nếu tiểu trình đó đang chờ một tiểu trình khác thực hiện một tác vụ. Sau khi chuỗi hoàn thành công việc, nó sẽ chuyển sang trạng thái kết thúc.

Một luồng có thể được thực hiện bằng giao diện Runnable. Tham khảo chương trình bên dưới.

Sự khác biệt giữa Runnable và Thread
Sự khác biệt giữa Runnable và Thread

Hình 01: Chương trình Java để tạo một chuỗi sử dụng giao diện Runnable

Theo chương trình trên, lớp Runnable Demo thực hiện giao diện Runnable. Phương thức run () nằm bên trong lớp thực thi giao diện Runnable. Nó là điểm vào của luồng. Logic nằm trong phương thức run (). Trong chương trình chính, một luồng được tạo bằng cách xác định một đối tượng khởi tạo từ lớp Runnable Demo. Đó là t1. Phương thức start () được gọi bằng cách sử dụng t1.

Tham khảo chương trình bên dưới.

Sự khác biệt giữa Runnable và Thread_Figure 02
Sự khác biệt giữa Runnable và Thread_Figure 02

Hình 02: Chương trình Java để tạo một luồng để thực hiện một vòng lặp, bằng cách triển khai giao diện Runnable

Theo ví dụ trên, lớp Runnable Demo thực hiện giao diện Runnable. Logic để thực thi bằng cách sử dụng luồng được viết trong phương thức run (). Trong chương trình chính, một luồng được tạo bằng cách xác định một đối tượng khởi tạo từ lớp Runnable Demo. Đó là t1. Sau đó, phương thức start () được gọi bằng cách sử dụng t1.

Chủ đề là gì?

Phương pháp khác để tạo luồng là mở rộng lớp Thread. Nó bao gồm ba bước. Đầu tiên là khai báo lớp là mở rộng lớp Thread. Sau đó, phương thức run () sẽ được viết. Nó có trình tự các bước mà luồng sẽ thực hiện. Cuối cùng, đối tượng luồng được tạo và phương thức start () được gọi để bắt đầu thực thi luồng. Tham khảo chương trình bên dưới.

Sự khác biệt giữa Runnable và Thread_Figure 03
Sự khác biệt giữa Runnable và Thread_Figure 03

Hình 03: Chương trình Java mở rộng lớp Thread

Theo chương trình trên, lớp MyThread mở rộng lớp Thread. Nó ghi đè phương thức chạy. Phương thức run () chứa logic sẽ được thực thi bởi luồng. Nó là điểm vào của luồng. Sau đó, đối tượng luồng được tạo. Nó là thread1. Luồng được bắt đầu bằng phương thức start (). Nó sẽ thực hiện một lệnh gọi đến phương thức run ().

Một chương trình ví dụ về hai lớp mở rộng lớp Thread như sau.

Sự khác biệt chính giữa Runnable và Thread
Sự khác biệt chính giữa Runnable và Thread

Hình 04: Chương trình Java với hai lớp mở rộng lớp Thread

Theo chương trình trên, cả lớp A và B đều mở rộng lớp Thread. Cả hai lớp đều có phương thức run (). Luồng chính thực thi phương thức main (). Trước khi luồng chính chết, nó tạo và khởi động luồng1 và luồng2. Vào thời điểm luồng chính đến cuối phương thức chính, ba luồng đang chạy song song. Không có thứ tự cụ thể trong đó các luồng cung cấp đầu ra. Khi luồng được bắt đầu, thật khó để quyết định thứ tự mà chúng sẽ thực hiện. Chúng hoạt động độc lập.

Điểm giống nhau giữa Runnable và Thread là gì?

Cả hai đều đang sử dụng để tạo một chuỗi trong Java

Sự khác biệt giữa Runnable và Thread là gì?

Runnable vs Thread

Runnable là một giao diện trong Java để tạo một luồng cho phép nhiều luồng chia sẻ cùng một đối tượng luồng. Luồng là một lớp trong Java để tạo một luồng trong đó mỗi luồng có một đối tượng duy nhất được liên kết với nó.
Bộ nhớ
Trong Runnable, nhiều luồng chia sẻ cùng một đối tượng, vì vậy yêu cầu ít bộ nhớ hơn. Trong lớp Thread, mỗi luồng tạo ra một đối tượng duy nhất, do đó yêu cầu nhiều bộ nhớ hơn.
Khả năng mở rộng
Sau khi triển khai giao diện Runnable, nó có thể mở rộng một lớp. Nhiều kế thừa không được hỗ trợ trong Java. Sau khi mở rộng lớp Thread, nó không thể mở rộng bất kỳ lớp nào khác.
Khả năng bảo trì mã
Giao diện Runnable giúp mã dễ bảo trì hơn. Trong lớp Thread, việc duy trì tốn nhiều thời gian.

Tóm tắt - Runnable vs Thread

Một quy trình được chia thành nhiều quy trình con để thực hiện nhiều tác vụ cùng một lúc. Các quy trình con này được gọi là các luồng. Việc khởi tạo một luồng có thể được thực hiện bằng cách triển khai giao diện Runnable hoặc bằng cách mở rộng Lớp luồng. Có thể dễ dàng mở rộng lớp Thread, nhưng nó không phải là một cách thực hành Lập trình hướng đối tượng tốt hơn. Khi triển khai Runnable, nhiều luồng có thể chia sẻ cùng một đối tượng luồng trong khi mở rộng lớp Thread, mỗi luồng có một đối tượng duy nhất được liên kết với nó. Đó là sự khác biệt giữa Runnable và Thread. Trong lớp Thread, việc tạo nhiều đối tượng có thể tiêu tốn nhiều bộ nhớ hơn.

Tải xuống bản PDF của Runnable vs Thread

Bạn có thể tải xuống phiên bản PDF của bài viết này và sử dụng nó cho mục đích ngoại tuyến theo ghi chú trích dẫn. Vui lòng tải xuống phiên bản PDF tại đây Sự khác biệt giữa Runnable và Thread

Đề xuất: