????Java????????
???????????? ???????[ 2015/1/26 13:13:58 ] ????????Java ???????
?????????????С???????????????????????????????????? ???????????????????????GameServer??this????????????????????(leave)??????????????????????????????????????????????????????????????????????????С?????????????
??????С??????????
??????????????????????????????????????????????????????????????????——????????????????д?????? ??
public class GameServer {
public Map<String?? List<Player>> tables = new HashMap<String?? List<Player>>();
public void join(Player player?? Table table) {
if (player.getAccountBalance() > table.getLimit()) {
synchronized (tables) {
List<Player> tablePlayers = tables.get(table.getId());
if (tablePlayers.size() < 9) {
tablePlayers.add(player);
}
}
}
}
//other methods skipped for brevity
}
|
????????????????????????????????????????????????????????????????????????????????????????????????????????????????鰱????????????Χ????
?????????
???????????????δ?????????????????????????????????????????????????????п??????????????????????????????????????????????????????????????????????????????С?
????????????????????????????????????????????????£????????£?
public class GameServer {
public Map<String?? List<Player>> tables = new HashMap<String?? List<Player>>();
public void join(Player player?? Table table) {
if (player.getAccountBalance() > table.getLimit()) {
List<Player> tablePlayers = tables.get(table.getId());
synchronized (tablePlayers) {
if (tablePlayers.size() < 9) {
tablePlayers.add(player);
}
}
}
}
//other methods skipped for brevity
}
|
??????????????????????????????????????????????????????????????????????????С???????????????100????????????????????????????С??100????
??????ò??????????
?????????????????????????????????????????????????????????????????????????????????ConcurrentHashMap???洢???е?????????????????????????
public class GameServer {
public Map<String?? List<Player>> tables = new ConcurrentHashMap<String?? List<Player>>();
public synchronized void join(Player player?? Table table) {/*Method body skipped for brevity*/}
public synchronized void leave(Player player?? Table table) {/*Method body skipped for brevity*/}
public synchronized void createTable() {
Table table = new Table();
tables.put(table.getId()?? table);
}
public synchronized void destroyTable(Table table) {
tables.remove(table.getId());
}
}
|
????join()??leave()???????????????????????????????????????tables???м?????????????ConcurrentHashMap?????????????????????tablePlayers?????????????????ConcurrentHashMap????????????????????createTable()??destroyTable()?????д????μ????????????????????ConcurrentHashMap?????????????????????????е??????????????????????
??????????????????
????????????????????????????У??????????public????????????????????????????????????????????????????????????????
?????????java.util.concurrent.locks??????????Щ????????????а??????
???????????????????????????е??????????????????????м?????????????Integer????AtomicInteger?????????????′????????
??????
???·???
??????????????????
2023/3/23 14:23:39???д?ò??????????
2023/3/22 16:17:39????????????????????Щ??
2022/6/14 16:14:27??????????????????????????
2021/10/18 15:37:44???????????????
2021/9/17 15:19:29???·???????·
2021/9/14 15:42:25?????????????
2021/5/28 17:25:47??????APP??????????
2021/5/8 17:01:11