java多對一
① java中怎麼用多個線程同時對一個文件讀取,最終將文件內容保存到一個位元組數組中去呢
多線程讀取文件在一塊硬碟上沒用,瓶頸在硬碟I/O,而不在CPU和內存。讀取文件時,CPU不用復雜的計算工作,只是數據傳輸而已,多線程反而造成磁頭來回移動,效率不高。如果是兩塊以上的硬碟,可以用不同的線程訪問不同的硬碟,效率比單線程要高
而且多線程操作同一文件除了效率還會有多線程問題,多個線程同時往數組里存數據還會有線程安全問題,如果不同步處理讀取的文件就是錯誤的。
如果讀取的話只能設置每個線程各自讀取偏 移量
讀取文件大小(比如大小是200K)。 2,啟動5個線程,第一個線程讀到40,第二個線程跳過40在讀到80,總之得合理安排好各個線程讀取的大小。這樣才能不重復讀取。大數據處理框架maprece原理和此類似
② java涓瀵逛竴鎸囧煎煿璁鐝鏈夊悧錛
涓轟粈涔堥夋嫨鍔ㄥ姏鑺傜偣鍛錛熸垜鎯沖彲鑳芥湁浠ヤ笅鍑犵偣鍘熷洜錛
1銆佸笀璧勫姏閲忥細璁插笀浠闄や簡鑷韜緇忛獙涓板瘜錛屼釜浜鴻兘鍔涢兘鏄涓綰誇簰鑱旂綉澶у挅涔嬪栵紝浜洪兘鐗瑰埆浜插垏錛屽悇鏈夌壒鑹詫紝鍍忔槸瀛﹀憳浠鏈鍠滄㈢殑鑰佹潨錛岄庤叮騫介粯鍙堜笓涓氾紝闂鑰佸笀鏈鎿呴暱鎷跨敓媧諱腑鐨勪簨鐗╀婦渚嬪瓙錛岀壒鍒鎺ュ湴姘旓紝鐜嬭佸笀鍛浣滀負鍞涓鐨勪竴浣嶅コ鎬ц插笀錛屽氨鍏呮弧浜嗗コ鎬у厜杈夛紝緇忓父鍦ㄥ﹀憳鐏板績涓ф皵鐨勬椂鍊欓亣瑙佸洶闅劇殑鏃跺欎負浠栦滑鎵撴皵錛屽府浠栦滑璁茶В闅鵑橈紝娓╂煍緇嗚嚧娣卞緱瀛﹀憳浠鐨勪竴鑷村ソ璇勶紒
2銆佸﹀憳鍙g戱細緇忓父鑳界湅鍒拌佸﹀憳鍦ㄦ浘緇忕殑qq瀹樻柟緹ら噷榪樻病鏈夐鍑哄幓錛屼竴鐩存潵闂闂棰樼殑錛屼篃榪樺湪鍜屼箣鍓嶇殑鐝涓諱換淇濇寔鐫鑱旂郴錛屾洿鏄浼氭帹鑽愮粰鑷宸辯殑瀛﹀紵瀛﹀規垨鑰呭懆鍥存湅鍙嬶紝鎴栬呭湪緗戜笂姣斿傝創鍚с佺煡涔庛佽眴鐡d笂闈涔熻兘鎵懼埌鏇劇粡鐨勮佸﹀憳錛岄棶闂渚跨煡閬撲簡錛
3銆佸氨涓氱巼錛鎴戜滑淇濋殰灝變笟鐜囷紝浣嗕笉鑳戒繚璇佺櫨鍒嗙櫨鍏ㄩ儴灝變笟錛屽洜涓哄︽牎鍜岃劇▼鏄瀹氶噺錛屼絾瀛﹀憳鏄鍙橀噺錛屼織璇濊達細鈥滃笀鍌呴嗚繘闂錛屼慨琛屽湪涓浜衡濊嚜宸辨棦鐒墮傚悎瀛︿範Java錛岄偅涔堝氨瑕佸姫鍔涜╃煡璇嗗﹁繘鑴戝瓙閲岋紝灝嗙煡璇嗙偣榪愮敤鍒板疄闄呴」鐩涓錛
4銆佽劇▼鍐呭瑰拰鏁欏︽ā寮忥細鎴戜滑閽堝逛笉鍚屽﹀憳緹や綋瑙勫垝浜嗕笉鍚岀殑璇劇▼錛屾湁寮濮嬬殑瀹為獙鐝錛屼笓闂ㄦ祴璇曚綘鏄鍚﹂傚悎瀛︿範Java錛屼笉鑳借╁﹀憳鑺卞啢鏋夐挶錛涘叏鏃ュ埗綰誇笅灝變笟鐝涓昏佷負浜嗛浂鍩虹灝忕櫧錛屾湁澶ч噺絀洪棽鏃墮棿鎯蟲彁楂樿嚜宸辨妧鏈姘村鉤鐨勫悓瀛︼紱鍏ㄧ▼鍦ㄧ嚎鐩存挱鐨勫滄牎鐝涓撻棬閽堝瑰湪鏍″ぇ瀛︾敓銆佽漿琛屾墦宸ヤ漢璁捐★紝鍒╃敤絀洪棽鏃墮棿瀛︿範錛屽湪綰誇笂鍙浠ョ洿鎺ヤ笌鑰佸笀榪涜屼簰鍔錛屽氨鍍忓湪璇懼爞涓婂︿範涓鏍鳳紱鏋舵瀯甯堢彮鍒欐槸涓轟簡鎯寵佺獊鐮磋亴涓氱摱棰堛佸崌鑱屽姞鍚鐨勫﹀憳錛屼粠鎶鏈鍒版濈淮璁╀綘鍏ㄩ潰鎻愬崌錛
5銆佸︿範璐圭敤錛鎬т環姣旈珮錛
鑰屼笖涓鑸瀛︿範Java鏈濂借繕鏄涓嶈佷竴瀵逛竴錛屽洜涓哄湪瀛︿範Java鐨勮繃紼嬩腑錛屾渶濂借兘澶熷ぇ瀹跺湪涓璧蜂簰鐩鎬氦嫻佸︿範錛屼竴瀵逛竴鐨勮瘽錛屾濈淮灝卞お榪囦簬灞闄愪簡錛