Bài tập 06: Tạo ứng dụng mô phỏng cuộc đua ngựa
Trong ứng dụng này, chúng ta sẽ sử dụng đa luồng để mô phỏng một cuộc đua ngựa. Hình bên dưới là một gợi ý về cuộc đua ngựa với chiến thắng là con ngựa Horse2 với quãng đường đua là 10 dặm (miles).


Mỗi con ngựa sẽ chạy trên 1 Thread độc lập theo ngữ cảnh sau: mỗi con ngựa sẽ phát sinh một số ngẫu nhiên (0-3) mô tả quãng đường mà con ngựa chạy được (theo đơn vị dặm). Sau đó mỗi Thread sẽ dừng 1 giây, sau đó tiếp tục cuộc đua cho đến khi tổng độ dài quãng đường vượt quá 10 dặm.
Mỗi quyết định về tiến độ về đích được thông báo dưới dạng Thông báo bằng cách sử dụng đối tượng Handler của Android.
Luồng chính chịu trách nhiệm quản lý giao diện người dùng. Chương trình chính nhận các thông báo được gửi từ các thread và mô tả vị trí tương đối của mỗi con ngựa trên các thanh progressbar. Luồng chính phải ghi lại “nhật ký” các thông báo. Mỗi dòng nhật ký được hiển thị bao gồm <id ngựa, số dặm hiện tại, tổng số dặm đã đi/ tổng số dặm>. Theo dõi các con ngựa đua để có thể ra quyết định dừng cuộc đua và reset lại cuộc đua về ban đầu. Luồng chính phải thông báo con ngựa nào chiến thắng.
