单线程和多线程的优缺点是什么 单线程和多线程的区别

\u591a\u7ebf\u7a0b\u548c\u5355\u7ebf\u7a0b\u6709\u4ec0\u4e48\u672c\u8d28\u533a\u522b

\u591a\u7ebf\u7a0b\u548c\u5355\u7ebf\u7a0b\u672c\u8d28\u533a\u522b\u662f\uff1a
\uff081\uff09\u591a\u7ebf\u7a0b\u7684\u4ea7\u751f\u5e76\u4e0d\u662f\u56e0\u4e3a\u53d1\u660e\u4e86\u591a\u6838CPU\u751a\u81f3\u73b0\u5728\u6709\u591a\u4e2aCPU+\u591a\u6838\u7684\u786c\u4ef6\uff0c\u4e5f\u4e0d\u662f\u56e0\u4e3a\u591a\u7ebf\u7a0bCPU\u8fd0\u884c\u6548\u7387\u6bd4\u5355\u7ebf\u7a0b\u9ad8\u3002\u5355\u4eceCPU\u7684\u8fd0\u884c\u6548\u7387\u4e0a\u8003\u8651\uff0c\u5355\u4efb\u52a1\u8fdb\u7a0b\u53ca\u5355\u7ebf\u7a0b\u6548\u7387\u662f\u6700\u9ad8\u7684\uff0c\u56e0\u4e3aCPU\u6ca1\u6709\u4efb\u4f55\u8fdb\u7a0b\u53ca\u7ebf\u7a0b\u7684\u5207\u6362\u5f00\u9500\uff0c
\uff082\uff09\u5b9e\u9645\u4e0a\uff0c\u591a\u7ebf\u7a0b\u7684\u51fa\u73b0\u4e3b\u8981\u4e3a\u4e86\u89e3\u51b3IO\u8bbe\u5907\u7684\u8bfb\u5199\u901f\u5ea6\u5f80\u5f80\u6bd4CPU\u7684\u5904\u7406\u901f\u5ea6\u6162\u9020\u6210\u7684\u5355\u7ebf\u7a0b\u7a0b\u5e8f\u8fd0\u884c\u963b\u585e\u95ee\u9898\uff0c\u4e00\u4e2a\u6781\u7aef\u7684\u4f8b\u5b50\u5c31\u662f\u5982\u679c\u4f60\u9700\u8981\u7528\u6237\u5728\u952e\u76d8\u4e0a\u8f93\u5165\u4e00\u4e2a\u6570\u636e\uff0c\u5f53\u7528\u6237\u6ca1\u6709\u8f93\u5165\u524d\uff0c\u5355\u7ebf\u7a0b\u7a0b\u5e8f\u5c31\u963b\u585e\u4e86\uff0c\u591a\u7ebf\u7a0b\u7a0b\u5e8f\u5c31\u53ef\u4ee5\u653e\u4e2a\u97f3\u4e50\u6216\u7ee7\u7eed\u5e72\u4e00\u4e9b\u7a0b\u5e8f\u4e2d\u9664\u4e86\u952e\u76d8\u8f93\u5165\u5916\u7684\u5de5\u4f5c\uff0c\u56e0\u6b64\uff0c\u591a\u7ebf\u7a0b\u80fd\u63d0\u9ad8\u56e0\u7a0b\u5e8f\u7531\u4e8e\u7b49\u5f85\u67d0\u4e2a\u8d44\u6e90\u963b\u585e\u65f6\u5176\u4ed6\u8d44\u6e90\u7684\u5229\u7528\u7387\uff08\u662f\u5229\u7528\u7387\u4e0d\u662f\u6548\u7387\uff09\u3002
\uff083\uff09\u56e0\u6b64\u591a\u7ebf\u7a0b\u4e0e\u5355\u7ebf\u7a0b\u7684\u6700\u5927\u533a\u522b\uff0c\u591a\u7ebf\u7a0b\u7a0b\u5e8f\u80fd\u5728\u7b49\u5f85\u67d0\u4e2aIO\u64cd\u4f5c\u65f6\uff0c\u7ee7\u7eed\u5b8c\u6210\u975e\u8fd9\u4e2aIO\u7684\u5176\u4ed6\u5de5\u4f5c\uff0c\u6709\u5229\u4e8e\u63d0\u9ad8\u5b8c\u6210\u6574\u4e2a\u4efb\u52a1\u7684\u6548\u679c\u548c\u901f\u5ea6\u3002\u6b64\u5916\uff0c\u591a\u7ebf\u7a0b\u7a0b\u5e8f\u4e0e\u5355\u7ebf\u7a0b\u7a0b\u5e8f\u5bf9\u7a0b\u5e8f\u8bbe\u8ba1\u4e5f\u6709\u4e0d\u540c\u7684\u6d41\u7a0b\u548c\u7ed3\u6784\uff0c\u591a\u7ebf\u7a0b\u9700\u8981\u8003\u8651\u5bf9\u9759\u6001\u53d8\u91cf\u7b49\u8d44\u6e90\u7684\u64cd\u4f5c\u4e92\u9501\u53ca\u7a0b\u5e8f\u6267\u884c\u7684\u540c\u6b65\u95ee\u9898\u3002

\u591a\u7ebf\u7a0b\u548c\u5355\u7ebf\u7a0b\u672c\u8d28\u533a\u522b\u662f\uff1a
\uff081\uff09\u591a\u7ebf\u7a0b\u7684\u4ea7\u751f\u5e76\u4e0d\u662f\u56e0\u4e3a\u53d1\u660e\u4e86\u591a\u6838CPU\u751a\u81f3\u73b0\u5728\u6709\u591a\u4e2aCPU+\u591a\u6838\u7684\u786c\u4ef6\uff0c\u4e5f\u4e0d\u662f\u56e0\u4e3a\u591a\u7ebf\u7a0bCPU\u8fd0\u884c\u6548\u7387\u6bd4\u5355\u7ebf\u7a0b\u9ad8\u3002\u5355\u4eceCPU\u7684\u8fd0\u884c\u6548\u7387\u4e0a\u8003\u8651\uff0c\u5355\u4efb\u52a1\u8fdb\u7a0b\u53ca\u5355\u7ebf\u7a0b\u6548\u7387\u662f\u6700\u9ad8\u7684\uff0c\u56e0\u4e3aCPU\u6ca1\u6709\u4efb\u4f55\u8fdb\u7a0b\u53ca\u7ebf\u7a0b\u7684\u5207\u6362\u5f00\u9500\uff0c
\uff082\uff09\u5b9e\u9645\u4e0a\uff0c\u591a\u7ebf\u7a0b\u7684\u51fa\u73b0\u4e3b\u8981\u4e3a\u4e86\u89e3\u51b3IO\u8bbe\u5907\u7684\u8bfb\u5199\u901f\u5ea6\u5f80\u5f80\u6bd4CPU\u7684\u5904\u7406\u901f\u5ea6\u6162\u9020\u6210\u7684\u5355\u7ebf\u7a0b\u7a0b\u5e8f\u8fd0\u884c\u963b\u585e\u95ee\u9898\uff0c\u4e00\u4e2a\u6781\u7aef\u7684\u4f8b\u5b50\u5c31\u662f\u5982\u679c\u4f60\u9700\u8981\u7528\u6237\u5728\u952e\u76d8\u4e0a\u8f93\u5165\u4e00\u4e2a\u6570\u636e\uff0c\u5f53\u7528\u6237\u6ca1\u6709\u8f93\u5165\u524d\uff0c\u5355\u7ebf\u7a0b\u7a0b\u5e8f\u5c31\u963b\u585e\u4e86\uff0c\u591a\u7ebf\u7a0b\u7a0b\u5e8f\u5c31\u53ef\u4ee5\u653e\u4e2a\u97f3\u4e50\u6216\u7ee7\u7eed\u5e72\u4e00\u4e9b\u7a0b\u5e8f\u4e2d\u9664\u4e86\u952e\u76d8\u8f93\u5165\u5916\u7684\u5de5\u4f5c\uff0c\u56e0\u6b64\uff0c\u591a\u7ebf\u7a0b\u80fd\u63d0\u9ad8\u56e0\u7a0b\u5e8f\u7531\u4e8e\u7b49\u5f85\u67d0\u4e2a\u8d44\u6e90\u963b\u585e\u65f6\u5176\u4ed6\u8d44\u6e90\u7684\u5229\u7528\u7387\uff08\u662f\u5229\u7528\u7387\u4e0d\u662f\u6548\u7387\uff09\u3002
\uff083\uff09\u56e0\u6b64\u591a\u7ebf\u7a0b\u4e0e\u5355\u7ebf\u7a0b\u7684\u6700\u5927\u533a\u522b\uff0c\u591a\u7ebf\u7a0b\u7a0b\u5e8f\u80fd\u5728\u7b49\u5f85\u67d0\u4e2aIO\u64cd\u4f5c\u65f6\uff0c\u7ee7\u7eed\u5b8c\u6210\u975e\u8fd9\u4e2aIO\u7684\u5176\u4ed6\u5de5\u4f5c\uff0c\u6709\u5229\u4e8e\u63d0\u9ad8\u5b8c\u6210\u6574\u4e2a\u4efb\u52a1\u7684\u6548\u679c\u548c\u901f\u5ea6\u3002\u6b64\u5916\uff0c\u591a\u7ebf\u7a0b\u7a0b\u5e8f\u4e0e\u5355\u7ebf\u7a0b\u7a0b\u5e8f\u5bf9\u7a0b\u5e8f\u8bbe\u8ba1\u4e5f\u6709\u4e0d\u540c\u7684\u6d41\u7a0b\u548c\u7ed3\u6784\uff0c\u591a\u7ebf\u7a0b\u9700\u8981\u8003\u8651\u5bf9\u9759\u6001\u53d8\u91cf\u7b49\u8d44\u6e90\u7684\u64cd\u4f5c\u4e92\u9501\u53ca\u7a0b\u5e8f\u6267\u884c\u7684\u540c\u6b65\u95ee\u9898\u3002

  单线程就是进程只有一个线程
  多线程就是进程有多个线程

  多线程处理的优点

  同步应用程序的开发比较容易,但由于需要在上一个任务完成后才能开始新的任务,所以其效率通常比多线程应用程序低。如果完成同步任务所用的时间比预计时间长,应用程序可能会不响应。多线程处理可以同时运行多个过程。例如,文字处理器应用程序在您处理文档的同时,可以检查拼写(作为单独的任务)。由于多线程应用程序将程序划分成独立的任务,因此可以在以下方面显著提高性能:
  多线程技术使程序的响应速度更快,因为用户界面可以在进行其他工作的同时一直处于活动状态。
  当前没有进行处理的任务可以将处理器时间让给其他任务。
  占用大量处理时间的任务可以定期将处理器时间让给其他任务。
  可以随时停止任务。
  可以分别设置各个任务的优先级以优化性能。

  是否需要创建多线程应用程序取决于多个因素。在以下情况下,最适合采用多线程处理:
  耗时或大量占用处理器的任务阻塞用户界面操作。
  各个任务必须等待外部资源(如远程文件或 Internet 连接)。

  例如,用于跟踪 Web 页上的链接并下载满足特定条件的文件的 Internet 应用程序“robot”。这种应用程序可以依次同步下载各个文件,也可以使用多线程同时下载多个文件。多线程方法比同步方法的效率高很多,因为即使在某些线程中远程 Web 服务器的响应非常慢,也可以下载文件。
  http://cache.baidu.com/c?word=%B6%E0%3B%CF%DF%B3%CC%3B%B5%C4%3B%D3%C5%B5%E3&url=http%3A//www%2Edaima%2Ecom%2Ecn/Info/94/Info31410/&b=0&a=4&user=baidu#0

  下面是多线程的例子
  还在Dos时代,人们就在寻求一种多任务的实现。于是出现了TSR类型的后台驻留程序,比较有代表性的有Side Kick、Vsafe等优秀的TSR程序,这类程序的出现和应用确实给用户使用计算机带来了极大的方便,比如Side Kick,我们编程可以在不用进编辑程序的状态下,一边编辑源程序,一边编译运行,非常方便。但是,Dos单任务操作系统的致命缺陷注定了在Dos下不可能开发出真正的多任务程序。进入Windows3.1时代,这种情况依然没有根本的改变,一次应用只能做一件事。比如数据库查询,除非应用编得很好,在查询期间整个系统将不响应用户的输入。
  进入了Windows NT和Windows 9x时代,情况就有了彻底的改观,操作系统从真正意义上实现了多任务(严格地说,Win9x还算不上)。一个应用程序,在需要的时候可以有许多个执行线程,每个线程就是一个小的执行程序,操作系统自动使各个线程共享CPU资源,确保任一线程都不能使系统死锁。这样,在编程的时候,可以把费时间的任务移到后台,在前台用另一个线程接受用户的输入。对那些对实时性要求比较高的编程任务,如网络客户服务、串行通信等应用时,多线程的实现无疑大大地增强了程序的可用性和稳固性。

  多线程和传统的单线程在程序设计上最大的区别在于,由于各个线程的控制流彼此独立,使得各个线程之间的代码是乱序执行的,由此带来的线程调度,同步等问题,将在以后探讨。
  多线程是这样一种机制,它允许在程序中并发执行多个指令流,每个指令流都称为一个线程,彼此间互相独立。
  线程又称为轻量级进程,它和进程一样拥有独立的执行控制,由操作系统负责调度,区别在于线程没有独立的存储空间,而是和所属进程中的其它线程共享一个存储空间,这使得线程间的通信远较进程简单。
  多个线程的执行是并发的,也就是在逻辑上“同时”,而不管是否是物理上的“同时”。

  • 绾跨▼鐨浼樼偣鏈
    绛旓細鍦ㄤ竴涓澶氱嚎绋绋嬪簭閲岋紝鍥犱负鏃堕棿涓婂垎閰嶇殑缁嗗井宸窛鎴栬呮槸鍏变韩浜嗕竴浜涗笉搴旇鍏变韩鐨勫彉閲忚岄犳垚涓嶈壇褰卞搷鐨勫彲鑳藉奖鍝嶆槸寰堝ぇ鐨勩傦級缂轰箯璁块棶鎺у埗锛 鍥犱负杩涚▼鏄闂帶鍒剁殑鍩烘湰绮掑害锛屽湪涓涓嚎绋嬩腑璋冪敤鏌愪簺OS鍑芥暟浼氬鏁翠釜杩涚▼閫犳垚褰卞搷 銆傦級缂栫▼闅惧害鎻愰珮锛堢紪鍐欏拰 璋冭瘯涓涓绾跨▼绋嬪簭姣鍗曠嚎绋鍥伴毦鐨勫銆
  • 鍗曠嚎绋嬪拰澶氱嚎绋鍝釜閲嶈
    绛旓細涓よ呬竴鏍烽噸瑕併鍗曠嚎绋閫傜敤浜庣畝鍗曠殑浠诲姟鎴栬呰祫婧愭湁闄愮殑鐜锛屽彲浠ヤ繚璇佷换鍔℃寜鐓ч『搴忔墽琛岋紝閬垮厤浜嗙珵浜夋潯浠跺拰姝婚攣绛夐棶棰樸傝澶氱嚎绋鍒欓傜敤浜庡鏉傜殑浠诲姟鎴栬呴渶瑕侀珮骞跺彂澶勭悊鐨勬儏鍐碉紝鑳藉鎻愰珮绯荤粺鐨勫搷搴旈熷害鍜屽悶鍚愰噺锛屽苟鍏呭垎鍒╃敤澶氭牳澶勭悊鍣ㄨ祫婧愩
  • 璺敱鍣澶氱嚎绋嬪拰鍗曠嚎绋
    绛旓細CPU娌℃湁浠讳綍杩涚▼鍙婄嚎绋嬬殑鍒囨崲寮閿銆2銆澶氱嚎绋嬬殑鍑虹幇涓昏涓轰簡瑙e喅IO璁惧鐨勮鍐欓熷害寰寰姣擟PU鐨勫鐞嗛熷害鎱㈤犳垚鐨勫崟绾跨▼绋嬪簭杩愯闃诲闂銆3銆佸绾跨▼涓庡崟绾跨▼鐨勬渶澶у尯鍒紝澶氱嚎绋嬬▼搴忚兘鍦ㄧ瓑寰呮煇涓狪O鎿嶄綔鏃讹紝缁х画瀹屾垚闈炶繖涓狪O鐨勫叾浠栧伐浣滐紝鏈夊埄浜庢彁楂樺畬鎴愭暣涓换鍔$殑鏁堟灉鍜岄熷害銆
  • Java澶氱嚎绋嬪拰鍗曠嚎绋鎬庝箞閫氫織鏄撴噦鐨勭悊瑙?
    绛旓細绾跨▼姹犱綔涓洪珮绾у伐鍏凤紝閫氳繃Executors绫荤畝鍖栦簡绾跨▼绠$悊锛屾彁楂樹簡鎬ц兘銆傜嚎绋嬫睜鍙互璁剧疆鍥哄畾澶у皬锛屾帶鍒跺苟鍙戦噺锛岀‘淇濊祫婧愮殑鍚堢悊鍒嗛厤銆傛澶栵紝ThreadGroup鍜岀嚎绋嬮氫俊鏂规硶锛堝Object绫绘彁渚涚殑wait(), notify()绛夛級鍦ㄥ鐞嗙嚎绋嬬粍鍜岀嚎绋嬮棿鐨勫崗浣滀腑璧峰埌鍏抽敭浣滅敤銆傛荤殑鏉ヨ锛孞ava鐨澶氱嚎绋嬪拰鍗曠嚎绋灏卞儚宸ュ巶涓殑涓嶅悓宸ヤ綔妯″紡锛...
  • 澶氱嚎绋鐪熺殑姣鍗曠嚎绋鎵ц鏁堢巼楂樺悧
    绛旓細澶嶅埗鍣紝windows鎿嶄綔绯荤粺澶嶅埗鏂囦欢寰堟參锛屽洜涓鸿礋璐e鍒剁殑api闃叉绯荤粺鍗℃姣忎釜绾跨▼灏辩粰浣犻偅鐐归熷害锛屽鏋滅敤java鍐欎釜澶氱嚎绋io娴佸鍒讹紝閫熷害蹇8鍊嶅乏鍙筹紱杩欐牱鐨勫満鍚堟湁涓壒鐐癸紝閫熷害鎴栬呰鏁堢巼鐨勫叧閿笉鏄痡ava鐨勫鐞嗚兘鍔涳紝鑰屾槸鎺ュ彛闄愬埗鎴愪簡鐡堕锛涗妇涓弽渚嬶紝濡傛灉瀵逛竴涓泦鍚堣繘琛岄亶鍘嗭紝鎵撳嵃value锛屼娇鐢ㄥ绾跨▼鏄庢樉姣鍗曠嚎绋...
  • Java 澶氱嚎绋嬪拰鍗曠嚎绋鏁堢巼姣旇緝,鏈濂芥槸鑳戒笂浠g爜,鎴戜娇鐢ㄤ簡澶氱嚎绋嬪彂鐜拌楁椂鏇...
    绛旓細鍗曠嚎绋姣斿绾跨▼鏇村揩銆備綘鐨勬祴璇曚唬鐮佸彧鏄敤浜咰PU璧勬簮銆傚洜涓哄绾跨▼闇瑕佸鐞绾跨▼鐨寮閿锛屽紑閿澶氫簡鑷劧娌℃湁鍗曠嚎绋嬪揩銆澶氱嚎绋嬫槸涓轰簡鏇村厖鍒嗙殑鍒╃敤璁$畻鏈虹殑璧勬簮銆傛瘮濡傜綉缁,IO,CPU...濡傛灉浣犲湪for寰幆閲屽姞鍏ヤ竴涓鐩樺啓鍏ユ搷浣滐紝澶氱嚎绋嬪氨浼氭瘮鍗曠嚎绋嬪揩浜
  • 澶氱嚎绋鑺墖鍜鍗曠嚎绋鑺墖鍖哄埆
    绛旓細杩愮畻鏁堢巼涓嶅悓锛屾灦鏋勪笉鍚屻1銆佽繍绠楁晥鐜囦笉鍚岋細澶氱嚎绋鑺墖鑳藉湪绛夊緟鏌愪釜IO鎿嶄綔鏃讹紝缁х画瀹屾垚闈炶繖涓狪O鐨勫叾浠栧伐浣滐紝鏈夊埄浜庢彁楂樺畬鎴愭暣涓换鍔$殑鏁堟灉鍜岄熷害銆傚崟绾跨▼鍝嶅簲閫熷害浣庝簬澶氱嚎绋嬭姱鐗囥2銆佹灦鏋勪笉鍚岋細澶氱嚎绋嬬▼搴涓庡崟绾跨▼绋嬪簭瀵圭▼搴忚璁℃湁涓嶅悓鐨勬祦绋嬪拰缁撴瀯锛屽绾跨▼闇瑕侀澶栬冭檻瀵归潤鎬佸彉閲忚祫婧愮殑鎿嶄綔浜掗攣鍙婄▼搴忔墽琛...
  • 璇烽棶鍗曠嚎绋嬪拰澶氱嚎绋嬫槸浠涔鎰忔濆晩?
    绛旓細鍗曠嚎绋杈澶氱嚎绋鏉ヨ锛岀郴缁熺ǔ瀹氥佹墿灞曟ф瀬寮恒佽蒋浠朵赴瀵屻傚鐢ㄤ簬鐐瑰鐐圭殑鏈嶅姟銆傚湪涓涓▼搴忎腑锛岃繖浜涚嫭绔嬭繍琛岀殑绋嬪簭鐗囨柇鍙綔鈥滅嚎绋嬧濓紙Thread锛夛紝鍒╃敤瀹冪紪绋嬬殑姒傚康灏卞彨浣溾滃绾跨▼澶勭悊鈥濄傚绾跨▼澶勭悊涓涓父瑙佺殑渚嬪瓙灏辨槸鐢ㄦ埛鐣岄潰銆傚埄鐢ㄧ嚎绋嬶紝鐢ㄦ埛鍙寜涓嬩竴涓寜閽紝鐒跺悗绋嬪簭浼氱珛鍗充綔鍑哄搷搴旓紝鑰屼笉鏄鐢ㄦ埛绛夊緟绋嬪簭...
  • 鍗曠嚎绋鏄惁姣澶氱嚎绋杩愯閫熷害蹇,鍘熷洜鏄粈涔??鍥炵瓟婊℃剰,鍐嶅姞30鍒哶鐧惧害鐭...
    绛旓細杩欎釜涔熻鐪嬩粬鐨勪富棰戞槸澶氶珮浜.姣斿鍗曟牳CPU3.06灏辨瘮鍙屾牳2.6鐨勪富棰戣楂,浣嗘槸鍗曠嚎绋嬫槸杩愯涓涓▼搴忔垨灏戜釜绋嬪簭鑳芥樉绀哄嚭鏉ヤ粬鐨勯熷害,杩愯涓滆タ澶氫簡鐨勮瘽灏变細琚澶氱嚎绋缁欐瘮涓嬪幓浜.
  • 澶氱嚎绋涓嬭浇鍜鍗曠嚎绋涓嬭浇?鍝釜濂?
    绛旓細澶氱嚎绋涓嬭浇鏄姞閲嶅埆鐨勬湇鍔″櫒鐨勮礋鎷咃紒褰撶劧鏄绾跨▼濂斤紒浣嗚鐪嬫湇鍔″櫒鏀笉鏀寔澶氱嚎绋嬩笅杞
  • 扩展阅读:为什么不建议用多线程 ... 单线程女孩什么意思 ... 单线程的人是啥意思 ... 电脑8核和12核哪个好 ... 单线程和多线程哪个好 ... 为什么不建议用线程池 ... cpu几核几线程最好 ... 玩游戏有必要多线程吗 ... 办公多线程还是单线程 ...

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