Em đang code cái `MMORoom` ở https://github.com/youngmonkeys/game-box/pull/2. Em có 1 số câu hỏi:
1. Ở `NormalRoom`, thằng playerManager là raw type, làm sao chuyển nó thành `PlayerManager` ở MMORoom.
2. Với vòng lặp vô hạn ở `MMORoom`, mình viết unit test kiểu gì vậy ạ?
3. Cái vòng lặp trong `MMORoom` có cần làm gì khác ngoài set cái nearby players không ạ?
1. Ở `NormalRoom`, thằng playerManager là raw type, làm sao chuyển nó thành `PlayerManager` ở MMORoom.
=> em cứ sử dụng playerManager, nhưng lúc lấy ra em ép kiểu về MMOPlayer nhé
2. Với vòng lặp vô hạn ở `MMORoom`, mình viết unit test kiểu gì vậy ạ?
=> Thực tế thì mình sẽ dùng bến `volatile active` em nhé cod sẽ kiểu
Mình có thể bố sung hàm destroy vào MMORoom để lúc nào remove cái room thì set cái `active` về false em nhé
3. Cái vòng lặp trong `MMORoom` có cần làm gì khác ngoài set cái nearby players không ạ?
=> không và không nên em ạ
Chỉ ở cuối vòng lặp mình sẽ có một cái hàm nofify kiểu này:
em nhé
Em đọc thì thấy biến volatile sẽ được lưu trên main memory. Cho em hỏi main memory ở đây có phải RAM ko ạ? Và có phải mọi threads sẽ đều truy cập được biến này?
Memory là RAM em ạ, dùng từ main memory hơi khó hiểu. Trong java mỗi một thread sẽ dùng khoảng 2MB cho call stack, mình hay gọi là stack memory, có thể cái main memory là một đối tượng singleton ở bên trong máy ảo Java chẳng hạn, khi tạo một biến
volatile boolean active = false
thì ở bên trong máy ảo sẽ hoạt động kiểu này:Còn khi
while(active)
sẽ được dịch kiểu này em ạ: