JAVA项目中哪些场景需要用到多线程,深感迷茫,请使用过的高手指点。 面试的时候都会问到多线程的问题,但实际很多项目并不会涉及到,...

java\u7535\u5546\u9879\u76ee\uff0c\u4ec0\u4e48\u573a\u666f\u9700\u8981\u4f7f\u7528\u591a\u7ebf\u7a0b

\u8fd9\u4e2a\u5f88\u7b80\u5355\uff0c\u9ad8\u5e76\u53d1\u6709\u591a\u79cd\u89e3\u51b3\u65b9\u6cd5\uff1a

1\u3001\u4ece\u4ee3\u7801\u4e0a\u5206\u5165\u624b\uff0c\u5fc5\u987b\u5f97\u4fdd\u8bc1\u4ee3\u7801\u6ca1\u6709\u5197\u4f59\uff0c\u4e0d\u8981\u6709\u5e9f\u4ee3\u7801\uff1b
2\u3001\u4ece\u670d\u52a1\u5668\u4e0a\u5165\u624b\uff0c\u9ad8\u5e76\u53d1\u4e00\u53f0\u670d\u52a1\u5668\u5e76\u53d1\u91cf\u6709\u9650\uff0c\u6211\u4eec\u53ef\u4ee5\u91c7\u7528\u591a\u53f0\u670d\u52a1\u5668\u6765\u5206\u62c5\u538b\u529b\uff1b
3\u3001\u4ece\u5b58\u50a8\u65b9\u4fbf\u5165\u624b\uff0c\u50cf\u6211\u4eec\u4e00\u822c\u9ad8\u5e76\u53d1\u4f46\u662f\u6570\u636e\u5374\u53ef\u4ee5\u4e0d\u7528\u5b58\u5230\u6570\u636e\u5e93\u4e2d\u7684\uff0c\u6211\u4eec\u5c31\u5b58\u5728\u5185\u5b58\u4e2d\uff0c\u56e0\u4e3a\u8bfb\u5185\u5b58\u7684\u901f\u5ea6\u662f\u6570\u636e\u5e93\u7684N\u500d\u3002

\u591a\u4e2a\u7ebf\u7a0b\u90fd\u4f1a\u64cd\u4f5c\u7684\u6570\u636e\uff0c\u4e5f\u53eb\u4e34\u754c\u533a\u6570\u636e\u3002

\u5c31\u50cf\u51e0\u4e2a\u53a8\u5b50\u5171\u7528\u4e00\u628a\u5200\u548c\u83dc\u677f\uff0c\u4e3a\u907f\u514d\u4e00\u4eba\u62ff\u5200\uff0c\u4e00\u4eba\u62ff\u83dc\u677f\uff0c\u5206\u914d\u4e00\u5b9a\u8981\u540c\u65f6\u5206\u914d\u7ed9\u4e00\u4e2a\u4eba\u3002

\u5176\u5b9e\u5c31\u662f\u8fd9\u4e2a\u610f\u601d\uff0c\u591a\u7ebf\u7a0b\u7f16\u7a0b\u9700\u8981\u5904\u7406\u7684\u5c31\u662f\u8fd9\u6837\uff0c\u591a\u4e2a\u6570\u636e\u6709\u903b\u8f91\u5b8c\u6574\u6027\u7684\u60c5\u51b5\u3002\u9700\u8981\u9501\u5b9a\u8d44\u6e90\uff0c\u8fdb\u884c\u591a\u7ebf\u7a0b\u4e92\u65a5\u64cd\u4f5c\u3002\u8bf4\u8d77\u6765\u5f88\u7384\u5999\uff0c\u5176\u5b9e\u5c31\u662f\u548c\u5206\u5200\u548c\u83dc\u677f\u4e00\u4e2a\u9053\u7406\u3002

场景一:一个业务逻辑有很多次的循环,每次循环之间没有影响,比如验证1万条url路径是否存在,正常情况要循环1万次,逐个去验证每一条URL,这样效率会很低,假设验证一条需要1分钟,总共就需要1万分钟,有点恐怖。这时可以用多线程,将1万条URL分成50等份,开50个线程,没个线程只需验证200条,这样所有的线程执行完是远小于1万分钟的。

场景二:需要知道一个任务的执行进度,比如我们常看到的进度条,实现方式可以是在任务中加入一个整型属性变量(这样不同方法可以共享),任务执行一定程度就给变量值加1,另外开一个线程按时间间隔不断去访问这个变量,并反馈给用户。
总之使用多线程就是为了充分利用cpu的资源,提高程序执行效率,当你发现一个业务逻辑执行效率特别低,耗时特别长,就可以考虑使用多线程。不过CPU执行哪个线程的时间和顺序是不确定的,即使设置了线程的优先级,因此使用多线程的风险也是比较大的,会出现很多预料不到的问题,一定要多熟悉概念,多构造不同的场景去测试才能够掌握!

  • Java杞欢寮鍙戣兘澶浣跨敤鍦鍝簺搴旂敤涓?
    绛旓細4.澶ф暟鎹簲鐢細Java鍦ㄥぇ鏁版嵁棰嗗煙涔熸湁鐫閲嶈鐨勫湴浣锛岀壒鍒槸鍦℉adoop銆丼park绛夊ぇ鏁版嵁澶勭悊妗嗘灦鐨勫紑鍙戜腑銆傚ぇ鏁版嵁搴旂敤閫氬父闇瑕佸鐞嗘捣閲忔暟鎹紝Java鐨勫己澶фц兘鍜屽绾跨▼鏀寔浣垮叾鎴愪负涓涓悊鎯崇殑閫夋嫨銆5.浜戣绠楋細Java搴旂敤绋嬪簭鍙互杞绘澗閮ㄧ讲鍒颁簯骞冲彴涓婏紝濡侫mazonWebServices锛圓WS锛夈丮icrosoftAzure绛夈備簯璁$畻鐜涓紝Java鐨...
  • Java 绫诲姞杞藉櫒(ClassLoader)鐨勫疄闄浣跨敤鍦烘櫙鏈鍝簺?
    绛旓細鐑儴缃蹭笌鐑姞杞絊pring Boot Devtools鐨勭儹鍔犺浇鍔熻兘锛岄氳繃RestartClassLoader锛屽疄鐜颁簡楂樻晥寮鍙戜綋楠屻傚畠鍙噸鏂板姞杞藉凡淇敼鐨勯儴鍒嗭紝鑰岄潪鏁翠釜搴旂敤锛屼娇寰楀紑鍙戣呮棤闇绛夊緟鍏ㄩ噺閮ㄧ讲銆傝繖绉嶆柟寮忎笉浠呮彁鍗囦簡寮鍙戞晥鐜囷紝杩樼‘淇濅簡鏃т唬鐮佺殑鍨冨溇鍥炴敹锛屼繚鎸佷簡绯荤粺鐨勭ǔ瀹氥傚湪鐑儴缃叉柟闈紝绫诲姞杞藉櫒鎻愪緵浜嗘洿缁嗙矑搴︾殑鍙戝竷鎺у埗銆傛瘮濡傚湪闃...
  • java涓宸茬粡鏈変簡瀛楄妭娴,涓轰粈涔堣繕闇瑕瀛楃娴,瀛楃娴佺殑搴旂敤鍦烘櫙鏄浠涔?
    绛旓細瀛楃娴佺殑搴旂敤鍦烘櫙锛氬瓧绗︽祦鐨勯瑕佸簲鐢ㄥ満鏅槸鏂囨湰鏂囦欢鐨勮鍐欙紝姣斿閰嶇疆鏂囦欢銆備妇涓緥瀛愶紝鎯宠薄涓涓嬩綘姝e湪缂栧啓涓涓郴缁燂紝瀹冮渶瑕佽鍙杍son銆亂aml鎴杙roperties鏍煎紡鐨勯厤缃枃浠讹紝杩欎簺鏂囦欢鐨勫唴瀹规槸浜虹被鍙鐨勬枃鏈紝鑰岄潪涓鍫嗘棤搴忕殑瀛楄妭銆備娇鐢ㄥ瓧绗︽祦锛屼綘鍙互鐩存帴璇诲彇鍜岃В鏋愯繖浜涙枃浠讹紝鏃犻渶鎵嬪姩杩涜瀛楄妭鍒板瓧绗︾殑杞崲鍜岀紪鐮佸...
  • 浠涔堝満鏅敤java,浠涔堝満鏅敤python?
    绛旓細Java鐨勪富瑕佸簲鐢ㄥ満鏅 鍦ㄥ緢澶氬満鏅叾瀹為兘鐢↗ava锛闃块噷宸村反銆佷含涓溿佹嫾澶氬锛屽浗鍐呰繖鍑犲鐢靛瓙鍟嗗姟缃戠珯锛屾牳蹇冩妧鏈爤閮芥槸Java锛岃屼笖Java绋嬪簭鍛樺湪鍥藉唴鐨勬暟閲忔鏃犵枒闂槸鏈澶х殑锛屽湪缇庡浗鍙兘鏁伴噺灏戜竴鐐癸紝浣嗘槸Java渚濈劧鏄洰鍓嶅叏鐞冪敤鎴烽噺绗竴鐨勭紪绋嬭瑷銆侸ava 浜嬪疄涓婇櫎浜嗕笁澶х數鍟嗙綉绔欙紝鍩烘湰涓婂浗鍐呯殑涓昏浜ゆ槗绯荤粺閮芥槸鐢↗ava鍐欑殑...
  • JAVA鐨涓昏鐢ㄩ旀槸鍝釜鏂归潰
    绛旓細4銆佸祵鍏ュ紡棰嗗煙 Java鍦ㄥ祵鍏ュ紡棰嗗煙鍙戝睍绌洪棿寰堝ぇ銆傚湪杩欎釜骞冲彴涓婏紝鍙渶130KB灏辫兘澶熶娇鐢↗ava鎶鏈紙鍦ㄦ櫤鑳藉崱鎴栬呬紶鎰熷櫒涓婏級銆5銆澶ф暟鎹妧鏈 Hadoop浠ュ強鍏朵粬澶ф暟鎹鐞嗘妧鏈緢澶氶兘鏄敤Java锛屼緥濡侫pache鐨勫熀浜嶫ava鐨凥Base鍜孉ccumulo浠ュ強 ElasticSearchas銆6銆侀珮棰戜氦鏄撶殑绌洪棿 Java骞冲彴鎻愰珮浜嗚繖涓钩鍙扮殑鐗规у拰鍗充娇缂栬瘧锛屼粬...
  • java 鐨 tomcat 绫诲姞杞芥満鍒舵湁鍝簺搴旂敤鍦烘櫙?
    绛旓細Tomcat 绫诲姞杞芥満鍒跺湪 Java Web 寮鍙戜腑鏈夊緢澶氬簲鐢鍦烘櫙锛屼富瑕佸寘鎷互涓嬪嚑鐐癸細1. 鍔ㄦ佸姞杞界被锛歍omcat 鐨勭被鍔犺浇鍣ㄥ彲浠ュ湪杩愯鏃跺姩鎬佸湴鍔犺浇 Java 绫伙紝杩欐牱鍙互鍦ㄤ笉閲嶅惎 Tomcat 鐨勬儏鍐典笅鏇存柊搴旂敤绋嬪簭銆傝繖瀵逛簬 Web 搴旂敤绋嬪簭鐨勫紑鍙戝拰閮ㄧ讲闈炲父鏂逛究锛屽彲浠ュ揩閫熷搷搴旂敤鎴风殑闇姹傚拰绯荤粺鐨勫彉鍖栥2. 绫昏矾寰勯殧绂伙細Tomcat 鏀寔...
  • JAVA椤圭洰涓摢浜涘満鏅渶瑕佺敤鍒澶氱嚎绋,娣辨劅杩疯尗,璇蜂娇鐢ㄨ繃鐨勯珮鎵嬫寚鐐广俖鐧...
    绛旓細鍦烘櫙涓:涓涓笟鍔¢昏緫鏈夊緢澶氭鐨勫惊鐜紝姣忔寰幆涔嬮棿娌℃湁褰卞搷锛屾瘮濡傞獙璇1涓囨潯url璺緞鏄惁瀛樺湪锛屾甯告儏鍐佃寰幆1涓囨锛岄愪釜鍘婚獙璇佹瘡涓鏉RL锛岃繖鏍锋晥鐜囦細寰堜綆锛屽亣璁鹃獙璇佷竴鏉¢渶瑕1鍒嗛挓锛屾诲叡灏遍渶瑕1涓囧垎閽燂紝鏈夌偣鎭愭栥傝繖鏃跺彲浠ョ敤澶氱嚎绋嬶紝灏1涓囨潯URL鍒嗘垚50绛変唤锛屽紑50涓嚎绋嬶紝娌′釜绾跨▼鍙渶楠岃瘉200鏉★紝杩欐牱...
  • Java鏄浠涔?Java鍒板簳鑳藉共鍢
    绛旓細娓告垙寮鍙戯細Java 涔熷彲浠ョ敤浜庡紑鍙戝悇绉嶇被鍨嬬殑娓告垙锛屽寘鎷闈㈡父鎴忓拰绉诲姩娓告垙銆傛暟鎹垎鏋愶細Java 鍙互涓庡ぇ鏁版嵁鎶鏈粨鍚锛岀敤浜庢暟鎹鐞嗗拰鍒嗘瀽銆傛荤殑鏉ヨ锛孞ava 鏄竴绉嶅己澶т笖鐏垫椿鐨勭紪绋嬭瑷锛屽叿鏈夊箍娉涚殑搴旂敤鍦烘櫙鍜屽己澶х殑鐢熸佺郴缁熴傚鏋滀綘瀵圭紪绋嬫垨杞欢寮鍙戞劅鍏磋叮锛屽涔 Java 鏄竴涓笉閿欑殑閫夋嫨😉...
  • java涓IO鍜孨IO鐨勫尯鍒拰閫傜敤鍦烘櫙
    绛旓細java.NIO鍖呴噷鍖呮嫭涓変釜鍩烘湰鐨勭粍浠 l buffer锛氬洜涓篘IO鏄熀浜庣紦鍐茬殑锛屾墍浠uffer鏄渶搴曞眰鐨勫繀瑕佺被锛岃繖涔熸槸IO鍜孨IO鐨勬牴鏈笉鍚岋紝铏界劧stream绛夋湁buffer寮澶寸殑鎵╁睍绫伙紝浣嗗彧鏄祦鐨勫寘瑁呯被锛岃繕鏄粠娴佽鍒扮紦鍐插尯锛岃孨IO鍗存槸鐩存帴璇诲埌buffer涓繘琛屾搷浣溿傚洜涓鸿鍙栫殑閮芥槸瀛楄妭锛屾墍浠ュ湪鎿嶄綔鏂囧瓧鏃讹紝瑕佺敤charset绫昏繘琛岀紪...
  • 鐜板疄涓栫晫涓摢浜鍦版柟鐢ㄥ埌浜Java?
    绛旓細1銆佸涔犲煿璁璊ava鑳藉寤虹珛缃戠珯 Java鑳藉鐢ㄤ簬缂栧啓缃戠珯锛屽浠婅澶氬晢涓氱綉绔欓兘鐢↗sp鍐欑殑锛孞SP鍏ㄧОJava Server Pages銆傚畠鏄竴绉嶅姩鎬佺綉绔欐妧鏈э紝渚嬪澶у浜嗚В鐨163锛屼竴浜涙斂搴滈棬鎴风綉绔欏叏鏄夌敤JSP鎾板啓鐨勩 鍥犳瀛︿範鍩硅Java鐨鍚屽浠兘澶熸壘寮鍙戠綉绔欏眰闈㈢殑宸ヤ綔涓紝骞朵笖濡備粖鎵捐繖浜涙柟闈㈢殑鑱屼綅姣旇緝澶氥 渚嬪锛氱綉绔欏缓璁...
  • 扩展阅读:简单的java项目实例 ... java项目完整案例 ... java项目经验怎么写 范例 ... 为什么都不建议java转测试 ... c++和java哪个好就业 ... java面试场景题 ... 学java为什么27岁就迟了 ... 免费开源java项目网站 ... 做一个java项目都需要什么 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网