【技術干貨】Java小知識
Java作為大數據技術的必備基礎編程語言,是想要轉行學習大數據的小伙伴必須要熟練掌握的一項技術。今天科妹就為大家帶來了Java里的小知識點講解。

1.類加載子系統的作用:根據給定的全限定名類名(如java.lang.Object)來裝載class文件的內容到運行時數據區中的方法區
2.雙親委派機制:當一個類收到了類加載請求時,不會自己先去加載這個類,而是將其委派給父類,由父類去加載,如果此時父類不能加載,反饋給子類,由子類去完成類的加載。
3.類加載過程:加載、鏈接(驗證、準備、解析)、初始化
加載階段,虛擬機需要完成以下3件事情:
1)通過一個類的全限定名來獲取定義此類的二進制字節流(并沒有指明要從一個Class文件中獲取,可以從其他渠道,譬如:網絡、動態生成、數據庫等)。
2)將這個字節流所代表的靜態存儲結構轉化為方法區的運行時數據結構。
3)在內存中生成一個代表這個類的java.lang.Class對象,作為方法區這個類的各種數據的訪問入口。
驗證階段大致會完成4個階段的檢驗動作:
1)文件格式驗證
2)元數據驗證
3)字節碼驗證
4)符號引用驗證
準備階段是正式為類變量分配內存并設置類變量初始值的階段,這些變量所使用的內存都將在方法區中進行分配。
解析階段是虛擬機將常量池內的符號引用替換為直接引用的過程。
在初始化階段,則根據程序猿通過程序制定的主觀計劃去初始化類變量和其他資源,或者說:初始化階段是執行類構造器()方法的過程。

棧的內存要遠遠小于堆內存
-Xss選項設置棧內存的大小。
-Xms選項可以設置堆的開始時的大小,-Xmx選項可以設置堆的最大值。

在Java中,每一個對象都擁有一個鎖標記(鎖),也稱為監視器,多線程同時訪問某個對象時,線程只有獲取了該對象的鎖才能訪問。
Lock和synchronized有以下幾點不同:
1)Lock是一個接口,而synchronized是Java中的關鍵字,synchronized是內置的語言實現;
2)采用synchronized不需要用戶去手動釋放鎖,當synchronized方法或者synchronized代碼塊執行完后,系統會自動讓線程釋放對鎖的占用;synchronized在發生異常時,會自動釋放線程占有的鎖,因此不會導致死鎖現象發生;而Lock在發生異常時,如果沒有主動通過unLock()去釋放鎖,則很可能造成死鎖現象,因此使用Lock時需要在finally塊中釋放鎖;
3)響應中斷Lock可以讓等待鎖的線程響應中斷,而synchronized卻不行,使用synchronized時,等待的線程會一直等待下去,不能夠響應中斷;
4)Lock可以是否獲取鎖,synchronized不行。
5)Lock可以提高多個線程進行讀操作的效率。
6) 公平鎖Lock可以設置為公平鎖,synchronized就是非公平鎖
單獨調用interrupt()方法不能中斷正在運行過程中的線程,只能中斷阻塞過程中的線程。
當通過lockInterruptibly()方法獲取某個鎖時,如果不能獲取到,只有進行等待的情況下,是可以響應中斷的(線程B調用threadB.interrupt()方法能夠中斷線程B的等待過程)。
而用synchronized修飾的話,當一個線程處于等待某個鎖的狀態,是無法被中斷的,只有一直等待下去。
Java作為大數據技術的重要基礎語言,大家一定要牢牢掌握住它的知識點,為自己的將來打好基礎。
更多大數據相關資訊,歡迎關注成都科多大數據微信公眾號。
請輸入評論內容...
請輸入評論/評論長度6~500個字
最新活動更多
- 1 特斯拉Optimus Gen3量產在即,哪些環節最具確定性?
- 2 OpenAI深夜王炸!ChatGPT Images 2.0實測:中文穩、細節炸,設計師慌了
- 3 AI狂歡遇上油價破百,全球股市還能漲多久? | 產聯看全球
- 4 6000億美元估值錨定:字節跳動的“去單一化”突圍與估值重構
- 5 Tesla AI5芯片最新進展總結
- 6 連夜測了一波DeepSeek-V4,我發現它可能只剩“審美”這個短板了
- 7 熱點丨AI“瑜亮之爭”:既生OpenClaw,何生Hermes?
- 8 2026,人形機器人只贏了面子
- 9 AI界的殺豬盤:9秒刪庫跑路,全員被封號,還繼續扣錢!
- 10 AI Infra產業鏈卡在哪里了?


分享













