|
@@ -56,7 +56,7 @@ public class RoomManager {
|
|
|
* @return
|
|
|
*/
|
|
|
public Room acquireRoom(int roomType) {
|
|
|
- Room room = roomPool.poll();
|
|
|
+ Room room = this.roomPool.poll();
|
|
|
if (room == null) {
|
|
|
// 创建指定类型的房间
|
|
|
room = RoomFactory.createRoom(roomType);
|
|
@@ -64,12 +64,22 @@ public class RoomManager {
|
|
|
return room;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 归还房间对象
|
|
|
+ */
|
|
|
+ public void releaseRoom(Room room) {
|
|
|
+ if (room != null) {
|
|
|
+ room.reset(); // 重置房间状态
|
|
|
+ this.roomPool.offer(room); // 放回池中
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 定期清理空闲房间
|
|
|
*/
|
|
|
private void cleanIdleRooms() {
|
|
|
- while (roomPool.size() > maxIdleRooms) {
|
|
|
- Room room = roomPool.poll();
|
|
|
+ while (this.roomPool.size() > maxIdleRooms) {
|
|
|
+ Room room = this.roomPool.poll();
|
|
|
if (room != null) {
|
|
|
// 销毁房间,释放资源
|
|
|
room.destroy();
|
|
@@ -81,13 +91,13 @@ public class RoomManager {
|
|
|
* 关闭对象池
|
|
|
*/
|
|
|
public void shutdown() {
|
|
|
- cleaner.shutdownNow();
|
|
|
- roomPool.forEach(Room::destroy);
|
|
|
- roomPool.clear();
|
|
|
+ this.cleaner.shutdownNow();
|
|
|
+ this.roomPool.forEach(Room::destroy);
|
|
|
+ this.roomPool.clear();
|
|
|
}
|
|
|
|
|
|
public int getAvailableRooms() {
|
|
|
- return roomPool.size();
|
|
|
+ return this.roomPool.size();
|
|
|
}
|
|
|
|
|
|
/**
|