H: Sự khác biệt giữa phương thức start () và run () của một luồng là gì?
Đáp: Các phương thức start () và run () riêng biệt trong lớp Thread cung cấp hai cách để tạo các chương trình phân luồng. Phương thức start () bắt đầu thực thi luồng mới và gọi phương thức run (). Phương thức start () trả về ngay lập tức và luồng mới thường tiếp tục cho đến khi phương thức run () trả về.
Phương thức run () của lớp Thread không làm gì cả, vì vậy các lớp con nên ghi đè phương thức bằng mã để thực thi trong luồng thứ hai. Nếu một Luồng được khởi tạo bằng đối số Runnable, phương thức run () của luồng sẽ thực thi phương thức run () của đối tượng Runnable trong luồng mới để thay thế.
Tùy thuộc vào bản chất của chương trình luồng của bạn, việc gọi phương thức Thread run () trực tiếp có thể cho kết quả tương tự như gọi qua phương thức start (), nhưng trong trường hợp sau, mã thực sự được thực thi trong một luồng mới.