Android下多线程的实现

线程安全相关问题参考: java内存模型与线程

android下与多线程有关的主要有以下几个类:

由于多线程操作目前主要由线程池方式实现,所以只重点关注Executors

1. 线程池的优势:

2. 线程池的实现

ThreadPoolExecutor是线程池的真正实现。看一下它的主要参数:

ThreadPoolExecutor执行时大致遵循如下规则:

3. 线程池的分类

Java默认实现了4种线程池,它们都是通过配置ThreadPoolExecutor实现的。



  • Android涓嬪绾跨▼鐨勫疄鐜
    绛旓細android涓嬩笌澶氱嚎绋嬫湁鍏崇殑涓昏鏈変互涓嬪嚑涓被锛氱敱浜庡绾跨▼鎿嶄綔鐩墠涓昏鐢辩嚎绋嬫睜鏂瑰紡瀹炵幇锛屾墍浠ュ彧閲嶇偣鍏虫敞Executors 1. 绾跨▼姹犵殑浼樺娍锛2. 绾跨▼姹犵殑瀹炵幇 ThreadPoolExecutor鏄嚎绋嬫睜鐨勭湡姝e疄鐜銆傜湅涓涓嬪畠鐨勪富瑕佸弬鏁帮細ThreadPoolExecutor鎵ц鏃跺ぇ鑷撮伒寰涓嬭鍒欙細3. 绾跨▼姹犵殑鍒嗙被 Java榛樿瀹炵幇浜4绉嶇嚎绋嬫睜锛屽畠浠兘...
  • 鎴戞鍦ㄥ啓鍏充簬android澶氱嚎绋涓嬭浇鐨勭▼搴,璋佽兘鎻愪緵涓弬鑰冪殑浠g爜?
    绛旓細android澶氱嚎绋嬪叾瀹炲氨鏄湪activity涓疄鐜皉unnable鎺ュ彛鎴杗ew thread(){}.start()鏂瑰紡寮鍚绾跨▼锛屽湪绾跨▼涓繘琛屼竴浜涜楁椂鐨勬搷浣銆傛瘮濡備笅杞界瓑銆傝繖鏍疯楁椂鐨勬搷浣滄斁鍦ㄥ瓙绾跨▼锛圲I涓轰富绾跨▼锛夐噷灏变笉浼氶犳垚涓荤嚎绋嬮樆濉炰簡銆傚鏋滃瓙绾跨▼涓笅杞界殑鏁版嵁闇瑕佸弽搴斿埌UI涓荤晫闈㈠氨闇瑕佷娇鐢╤andler鐨勬秷鎭鐞嗘満鍒躲傞氳繃瀛愮嚎绋嬪彂閫佹寚瀹氭秷鎭...
  • 姣忎釜Android 閮藉簲蹇呴』浜嗚В鐨澶氱嚎绋鐭ヨ瘑鐐箏
    绛旓細锛2锛変负浠涔堜笉鑳藉湪闈濽I绾跨▼涓洿鏂癠I 鍥犱负Android鐨UI绾跨▼鏄潪绾跨▼瀹夊叏鐨勶紝搴旂敤鏇存柊UI锛屾槸璋冪敤invalidate()鏂规硶鏉瀹炵幇鐣岄潰鐨勯噸缁橈紝鑰宨nvalidate()鏂规硶鏄潪绾跨▼瀹夊叏鐨勶紝涔熷氨鏄褰撴垜浠湪闈濽I绾跨▼鏉ユ洿鏂癠I鏃讹紝鍙兘浼氭湁鍏朵粬鐨勭嚎绋嬫垨UI绾跨▼涔熷湪鏇存柊UI锛岃繖灏变細瀵艰嚧鐣岄潰鏇存柊鐨勪笉鍚屾銆傚洜姝ゆ垜浠笉鑳藉湪闈濽I涓荤嚎绋...
  • android澶鏍,澶氱嚎绋璇ュ浣曠敤
    绛旓細浼楁墍鍛ㄧ煡锛Android 绋嬪簭鐨勫ぇ澶氭暟浠g爜鎿嶄綔閮藉繀椤绘墽琛屽湪涓绾跨▼锛屼緥濡傜郴缁熶簨浠(渚嬪璁惧灞忓箷鍙戠敓鏃嬭浆)锛岃緭鍏ヤ簨浠(渚嬪鐢ㄦ埛鐐瑰嚮婊戝姩绛)锛岀▼搴忓洖璋冩湇鍔★紝UI 缁樺埗浠ュ強闂归挓浜嬩欢绛夌瓑銆傞偅涔堟垜浠湪涓婅堪浜嬩欢鎴栬呮柟娉曚腑鎻掑叆鐨勪唬鐮佷篃灏嗘墽琛屽湪涓荤嚎绋嬨備竴鏃︽垜浠湪涓荤嚎绋嬮噷闈㈡坊鍔犱簡鎿嶄綔澶嶆潅鐨勪唬鐮侊紝杩欎簺浠g爜灏卞緢鍙兘闃荤涓荤嚎绋嬪幓...
  • android涓view鐨勬洿鏂版湁鍑犵鏂瑰紡 澶氱嚎绋鍜屽弻缂撳啿鐨勪娇鐢ㄦ儏鍐
    绛旓細涔熷氨鏄锛氬湪鏂扮嚎绋嬪垱寤哄苟鍙戦佷竴涓狹essage锛岀劧鍚庡啀涓荤嚎绋嬩腑鎹曡幏銆佸鐞嗚娑堟伅銆3.浣跨敤澶氱嚎绋鍜屽弻缂撳啿 Android涓璖urfaceView鏄疺iew鐨勫瓙绫伙紝濂瑰悓鏃朵篃瀹炵幇浜嗗弻缂撳啿銆備綘鍙互瀹氫箟涓涓ス鐨勫瓙绫诲苟瀹炵幇SurfaceHolder.Callback鎺ュ彛銆傜敱浜庡疄鐜癝urfaceHolder.Callback鎺ュ彛锛屾柊绾跨▼灏变笉闇瑕android.os.Handler甯繖浜嗐係urface...
  • 鍦澶氱嚎绋涓,瀛愮嚎绋嬫洿鏂颁富绾跨▼ui鏈夊摢浜涙柟娉曞強娉ㄦ剰鐐
    绛旓細UI澶氱嚎绋婣ndroidthread宸ヤ綔 鍦ㄤ竴涓狝ndroid 绋嬪簭寮濮嬭繍琛岀殑鏃跺欙紝浼氬崟鐙惎鍔ㄤ竴涓狿rocess銆傞粯璁ょ殑鎯呭喌涓嬶紝鎵鏈夎繖涓▼搴忎腑鐨凙ctivity鎴栬匰ervice锛圫ervice鍜 Activity鍙槸Android鎻愪緵鐨凜omponents涓殑涓ょ锛岄櫎姝や箣澶栬繕鏈塁ontent Provider鍜孊roadcast Receiver锛夐兘浼氳窇鍦ㄨ繖涓狿rocess銆備竴涓狝ndroid 绋嬪簭榛樿鎯呭喌涓嬩篃鍙湁涓涓...
  • Android绯荤粺涓殑鍚屾鏈哄埗鏄庝箞鏍风殑
    绛旓細鍦↗ava涓紝ReentrantLock绫绘彁渚涗簡鍙噸鍏ラ攣鐨勫疄鐜銆Android绯荤粺涔熶娇鐢ㄨ繖涓被鏉ュ疄鐜板彲閲嶅叆閿併3.璇诲啓閿佽鍐欓攣鏄竴绉嶉珮鏁堢殑鍚屾鏈哄埗锛屽叾鍙互鍏佽澶氱嚎绋鍚屾椂瀵瑰叡浜暟鎹鍙栵紝浣嗗彧鏈夊湪娌℃湁鍏朵粬绾跨▼杩涜鍐欐搷浣滅殑鏃跺欐墠鑳借繘琛屽啓鎿嶄綔銆傚湪Android绯荤粺涓紝璇诲啓閿侀氳繃ReadWriteLock绫绘潵瀹炵幇銆4.淇″彿閲忎俊鍙烽噺鏄竴绉嶇敤浜...
  • 濡備綍鐞嗚Вandroid澶氱嚎绋閲岀殑getLooper鏂规硶
    绛旓細涓嬮潰鐨勪唬鐮佹槸瀛︿範Handler.post鏂规硶鐨勶紝绗竴绉嶅啓娉曟病鏈変娇鐢╣etLooper锛岀粨鏋滆繍琛岀殑鏁堟灉鏄竴涓嚎绋嬶紝绗簩绉嶅啓娉曚娇鐢ㄤ簡getLooper锛岃繍琛岀殑鏁堟灉鏄澶氱嚎绋嬬殑:package com.WriteCode.AndroidHandlerPost;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.HandlerThread;...
  • android澶氱嚎绋
    绛旓細杩欎釜绾跨▼灏辨槸姣忔澧炲姞鍥剧墖鐨刟lpha鍊兼潵瀹炵幇鍥剧墖鎱㈡參鏄剧ず鐨勶紝鍥犱负绋嬪簭瑕佸湪onCreat瀹屾垚涔嬪悗鎵嶆樉绀猴紝浣犲鏋滃湪oncreat閲岃竟璺戦偅涓惊鐜紝閭d箞onCreat鏂规硶浜嬪疄涓婁竴鐩存病瀹屾垚锛屾墍浠ヤ竴鐩存樉绀洪粦鑹层傝鎯冲幓鎺夌嚎绋嬪澹筹紝鍙互璇曡瘯鍦ㄨЕ鍙戜簨浠堕噷鎵ц
  • Android 绾跨▼瀹夊叏-ThreadLocal
    绛旓細ThreadLocal 鏄竴绉绾跨▼瀹夊叏鐨 鏁版嵁瀹瑰櫒 锛瀹炵幇鍘熺悊灏辨槸浼氬湪涓嶅悓鐨勭嚎绋嬩繚鎸佸崟鐙瓨鍌ㄥ彉閲忋 鏈绠鍗曠殑浣跨敤鏂瑰紡濡備笅锛氭瀯閫犳柟娉曞涓嬶細ThreadLocalMap 鏄 ThreadLocal 鍐呴儴鐨勪竴涓被锛岀被浼 HashMap锛屽涓嬶細鍏朵腑鍏 Entry 缁ф壙鑷 WeakReference 涓紝姣忔瀛樺偍涓涓硷紝閮戒細鎶婂肩殑 HashCode 浣滀负 浣滀负key锛屽苟涓旇繖涓...
  • 扩展阅读:android开发三大框架 ... 多线程实现的四种方式 ... android多线程面试题 ... 怎么解除android系统 ... 多线程怎么实现 ... 用户级线程的实现方法 ... 基于android的智能垃圾箱 ... 实现线程的哪几种方法 ... 安卓多线程有几种实现方法 ...

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