您好,登錄后才能下訂單哦!
本篇文章為大家展示了System.out.println高并發下導致應用暫停怎么辦,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
今天在進行序列號壓測的時候,通過調用genSeqId方法來獲取序列號,100并發,16臺壓測機器,發現無論怎么壓測,調用量達到140w左右的時候,此方法的ops直接掉到了0,具體圖示如下:
從上圖可以明顯看到,整個ops呈現斷崖式下跌。
當時左思右想,不得其解,后來注釋掉代碼中的System.out.println后,然后再進行壓測,發現恢復正常:
上圖可以看到,壓到了一億的量后,由于沒有發現問題,就停止了壓測。
后來翻閱了一下System.out.println源碼,發現其并不適合高并發下的打印工作 ,原因在于其內部用了大量的Synchronized來進行同步操作,這樣就導致兩個請求之間需要進行同步等待操作。
上述內容就是System.out.println高并發下導致應用暫停怎么辦,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。