게임 룸을 관리하는 클래스가 정의되어 있습니다. 사용자가 새 룸을 만들면 고유 한 룸 번호가있는 새 룸을 생성하여 해시 세트에 추가합니다.몇 분 후에 개체를 재활용하도록 예약하는 방법
는 지금, 나는 24 시간, 또는 내 mememory
의 대부분을 지출 버려진 룸 개체가 어떻게이를 달성 할 수있는 말, HashSet의에서 해당 룸 개체를 제거하고 perfarmance 문제에 대한 객실 객체를 재활용하는 희망? 또한 성능을 향상시키기위한 제안은 매우 높이 평가 될 것입니다. 당신은 Timer를 사용하여이 스스로 할 수
public class RoomService {
private RoomService(){
super();
}
private HashSet<Room> roomSet =new HashSet<Room>();
private static RoomService instance =new RoomService();
public static RoomService getServiceInstance(){
return instance;
}
private static Integer generateRandom(int length) {
Random random = new Random();
char[] digits = new char[length];
digits[0] = (char) (random.nextInt(9) + '1');
for (int i = 1; i < length; i++) {
digits[i] = (char) (random.nextInt(10) + '0');
}
return Integer.decode(new String(digits));
}
/**
* Generate new Room with an unique Room number
* @return
*/
public Room newRoom(){
Room newRoom;
do{
newRoom =new Room(generateRandom(4));
}
while(!roomSet.add(newRoom));
return newRoom;
}}
public class Room {
private Integer roomNum;
private Date createTime=new Date();
private String creatorId;
/*
* constructor
*/
public Room(Integer roomNum) {
super();
this.roomNum = roomNum;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((roomNum == null) ? 0 : roomNum.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Room other = (Room) obj;
if (roomNum == null) {
if (other.roomNum != null)
return false;
} else if (!roomNum.equals(other.roomNum))
return false;
return true;
}
//getter and setter
//
//
public String getCreatorId() {
return creatorId;
}
public void setcreatorId(String creatorId) {
this.creatorId = creatorId;
}
public Integer getRoomNum() {
return roomNum;
}
public Date getCreateTime() {
return createTime;
}
}
이것이 정확히 필요한 것입니다. http://stackoverflow.com/a/3802420/544983 – Juvanis
감사합니다! 하지만 맵 대신 세트를 사용하고 있습니까? 세트에 대한 그들의 모범이 무엇입니까? – Jaskey
그러면 guava "cachebuilder"예제를 살펴볼 수 있습니다. – Juvanis