成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java游戲服維護過程中發(fā)現(xiàn)的一些細節(jié)

開發(fā) 后端
Java游戲服維護過程中的2個細節(jié)問題,異常導致線程中斷以及自動拆裝箱遇到容器類的一些問題,詳細請看下文

1.異常導致線程中斷:

游戲中啟動定時器,用來檢測地圖上掉落的物品是否到時,到時后從物品列表中清除。運行時發(fā)現(xiàn),系統(tǒng)運行一段時間后就出現(xiàn)掉落物品不消失的情況,檢查游戲邏輯沒有發(fā)現(xiàn)任何問題,當前定時器任務中連拋出異常的可能都沒有。在測試環(huán)境中使用各種方法測試都無法重現(xiàn)問題。只好萬分頭痛的去查看1GB/Hour的生產(chǎn)服運行日志,結(jié)果驚奇的發(fā)現(xiàn)用于檢測物品到時的定時器在某個時間神奇的消失了。查找定時器消失前的日志發(fā)現(xiàn)當前線程拋出了一個異常,異常拋出點還真的不是發(fā)現(xiàn)問題的定時器任務。

原因分析:

定時器timer里面其實有一個線程和一個timerTask數(shù)組,創(chuàng)建timer的時候啟動線程,然后線程負責輪詢每個timerTask是否到時,到時后執(zhí)行task中定義的操作。那么問題最終歸結(jié)為異常為什么會導致線程中斷。

標準的線程寫法是在run方法里面放置一個循環(huán),在循環(huán)結(jié)束以后,線程退出。那么如果在循環(huán)中的拋出異常而沒有捕獲,那么在跳出到循環(huán)外面之后,線程當然不會再執(zhí)行了。同樣定時器中的線程如果停止了,定時器里的所有任務當然也不會再執(zhí)行了。

2.當自動拆裝箱遇到容器類

自動拆裝箱的功能用起來很爽,各種基本數(shù)據(jù)類型和對應的封裝對象之間可以隨意轉(zhuǎn)換。但是不能忽視這個過程是有消耗資源的。

下面的代碼:

  1. Integer i = 1

在編譯后是這種樣子的:

  1. Integer i = Integer.valueOf(1); 

所以對同一個值多次拆裝箱的時候***將數(shù)據(jù)緩存一下,一點點的性能優(yōu)化也是優(yōu)化。

為什么容器類不支持基本數(shù)據(jù)類型?

好像這是一個約定俗成的概念,從學習java開始就被告訴容器類不支持基本數(shù)據(jù)類型,從來沒有想過為什么。想一想其實也很簡單,基本數(shù)據(jù)類型是游離于java萬事萬物皆對象的思想

之外的,與Object沒有繼承關(guān)系,所以要想支持只能針對每一個基本數(shù)據(jù)類型都寫一套容器類。他們是圖省事,當然都寫一套也沒有必要。

開始說正題,看下面的代碼:

  1. import java.util.HashMap;  
  2. import java.util.Map;  
  3.    
  4. public class HashMapTest {  
  5.     Map<Integer, String> map;  
  6.        
  7.     public static void main(String[] args)  
  8.     {  
  9.         HashMapTest test = new HashMapTest();  
  10.         test.map = new HashMap<Integer, String>();  
  11.         test.map.put(1"s");  
  12.         test.print((short1);  
  13.     }  
  14.        
  15.     public void print(short key)  
  16.     {  
  17.         String s = map.get(key);  
  18.         System.out.println(s);  
  19.     }  

這是根據(jù)真實的生產(chǎn)服bug抽取的問題代碼,當然不會寫得這么直接,要不然肯定到不了我這里了。按照我的理解hashMap的實現(xiàn)是根據(jù)對象的hashCode值進行快速定位并比較查找的,
只要hashCode相同就應該得到正確的結(jié)果。所以特意查了一下源碼發(fā)現(xiàn)返回的hashcode應該是完全相同的,這時就困惑了,看來之前的理解是有問題的。開源的東西就是有這點好處,
發(fā)現(xiàn)問題可以查看源碼尋根問底,看下面的代碼:

  1. public V get(Object key) {  
  2.         if (key == null)  
  3.             return getForNullKey();  
  4.         int hash = hash(key.hashCode());  
  5.         for (Entry<K,V> e = table[indexFor(hash, table.length)];  
  6.              e != null;  
  7.              e = e.next) {  
  8.             Object k;  
  9.             if (e.hash == hash && ((k = e.key) == key || key.equals(k)))  
  10.                 return e.value;  
  11.         }  
  12.         return null;  
  13.     } 

Integer的equals方法:

  1. public boolean equals(Object obj) {  
  2.     if (obj instanceof Integer) {  
  3.         return value == ((Integer)obj).intValue();  
  4.     }  
  5.     return false;  
  6.     } 

還是有一個問題,為什么get方法里面的參數(shù)不用泛型呢,如果用了泛型不就不會出現(xiàn)這種問題了。

原文鏈接:http://www.cnblogs.com/waynell/archive/2012/05/05/2444232.html

【編輯推薦】

  1. Java調(diào)用SQL Server的存儲過程詳解
  2. Java簡單的網(wǎng)絡(luò)爬蟲實現(xiàn)
  3. JavaMe開發(fā):低級界面繪圖之菜單
  4. JavaMe開發(fā):低級界面繪圖之點陣字
  5. Apache CXF實戰(zhàn)之三:傳輸Java對象
責任編輯:林師授 來源: 張瑋麗的博客
相關(guān)推薦

2010-05-11 19:01:11

Unix系統(tǒng)

2012-06-25 10:13:00

Java.NET

2009-10-28 10:38:16

IDC調(diào)查虛擬化

2019-05-07 10:28:27

2012-04-19 10:06:55

微軟Windows 8 E

2020-07-29 08:03:26

Celery異步項目

2021-11-15 15:43:28

Windows 11升級微軟

2018-08-01 15:40:13

猜畫小歌模型數(shù)據(jù)

2013-05-31 02:18:47

ASP.NET.Net

2020-06-28 08:26:07

正則表達式編程

2009-12-01 16:54:20

ADSL路由器安裝

2011-08-01 13:59:22

Oracle數(shù)據(jù)庫命名空間

2015-06-18 10:50:42

OS X Mac

2011-06-01 16:50:21

JAVA

2013-05-08 09:14:35

網(wǎng)絡(luò)維護網(wǎng)吧網(wǎng)管

2013-08-20 13:40:04

獨立游戲開發(fā)者移動應用PR經(jīng)驗移動應用營銷推廣

2018-06-28 09:38:16

2018-07-31 10:09:06

2012-11-05 10:35:59

程序員程序發(fā)布程序BUG

2012-11-05 10:17:33

編程開發(fā)程序
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 午夜免费av | 国产伦精品一区二区三区照片91 | 亚洲网站在线观看 | 亚洲欧美一区二区三区国产精品 | 亚洲精品在线视频 | 久久久久免费精品国产小说色大师 | 成人免费片 | 欧美亚洲高清 | 亚洲午夜精品一区二区三区他趣 | 国产成人一区二区三区久久久 | 不卡在线视频 | 天天操夜夜操 | 亚洲国产高清在线观看 | 成人国产精品久久 | 九九国产 | 久久成人亚洲 | 久久国产精品视频 | 国产一区二区三区 | 激情福利视频 | 91视频在线观看 | 国产精品成人久久久久 | 玖玖色在线视频 | 黄色国产在线视频 | 色资源站| 欧美aⅴ | www久久爱| 日本又色又爽又黄又高潮 | 福利视频网站 | 欧美网站一区 | 五月婷婷视频 | 精品久久国产视频 | 日本久久久久久 | 激情欧美日韩一区二区 | 亚洲一区二区三区免费在线 | 国产九九av | 成人在线精品 | 日韩欧美在线不卡 | 欧美日韩在线一区 | 亚洲视频在线一区 | 国产中文字幕亚洲 | 国产精品色一区二区三区 |