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镄勮繃绋嬩腑锛屾渶濂借兘澶熷ぇ瀹跺湪涓璧蜂簰鐩镐氦娴佸︿範锛屼竴瀵逛竴镄勮瘽锛屾濈淮灏卞お杩囦簬灞闄愪简锛