java的线程问题

JAVA \u7ebf\u7a0b\u95ee\u9898

\u54e5\u4eec\uff0c\u8fd9\u9898\u4f60\u95ee\u8fc7\u4e86\u5427\u3002\u3002\u3002\u800c\u4e14\u4e5f\u662f\u6211\u56de\u7b54\u7684\u3002\u3002\u5e2e\u4f60\u6458\u5f55\u4e0b\u597d\u4e86\u3002\u4e4b\u524d\u4f60\u7684\u7591\u95ee\u4e0d\u592a\u4e00\u6837\uff0c\u4f46\u6211\u4e5f\u56de\u7b54\u8fc7\u4e86\uff0cStarted\u53ef\u4ee5\u51fa\u73b0\u5728\u6570\u5b57\u4e4b\u540e\uff0c\u751a\u81f3\u7a7f\u63d2\uff0c\u4f46\u662f\u7b54\u6848\u8fd9\u4e0d\u662f\u6ca1\u6709\u8fd9\u4e9b\u9009\u9879\u4e48\u3002\u3002\u4e5f\u5373\uff0cStarted\u548c\u6570\u5b57\u8f93\u51fa\u662f\u6709\u4e00\u5b9a\u968f\u673a\u6027\u7684\uff0c\u6b63\u5982\u4f60\u6240\u8ff0\uff0cStarted\u4e4b\u524d\uff0c\u7ebf\u7a0b\u5c31\u5df2\u7ecfstart\u4e86\uff0c\u56e0\u6b64\u4e0a\u8ff0\u51e0\u79cd\u60c5\u51b5\u7686\u53ef\u80fd

0123\u80af\u5b9a\u662f\u987a\u5e8f\u8f93\u51fa\uff0c\u4f46Started\u53ef\u4ee5\u57280\u4e4b\u524d\u3001\u621601\u4e4b\u95f4\u300112\u4e4b\u95f4\u300123\u4e4b\u95f4\u30013\u4e4b\u540e\u4efb\u4f55\u65f6\u5019\u8f93\u51fa\uff0c\u56e0\u5728System.out.pririt("Started");\u8fd9\u53e5\u4e4b\u524d\uff0cthread t\u5df2\u5f00\u59cb\u8fd0\u884c\uff0cStarted\u548c0\u30011\u30012\u30013\u7684\u8f93\u51fa\u5148\u540e\u5173\u7cfb\u6709\u968f\u673a\u6027\uff0c\u8fd9\u4e5f\u662f\u591a\u7ebf\u7a0b\u8fd0\u884c\u7684\u7279\u5f81\u4e4b\u4e00\u3002\u5c31\u672c\u9898\u6765\u8bf4\uff0c\u4e0d\u5b58\u5728\u7a7f\u63d2\u8f93\u51fa\u7684\u7b54\u6848\uff0c\u8fd9\u70b9\u53ef\u4ee5\u7565\u8fc7\uff0c\u6b64\u5176\u4e00

\u5176\u4e8c\uff0cThread\u7c7b\u7684join\u65b9\u6cd5\u7684\u4f5c\u7528\u662f\uff0c\u7b49\u5f85\u8be5\u7ebf\u7a0b\u7ed3\u675f\uff0c\u6362\u8a00\u4e4b\uff0c\u5728\u8be5\u7ebf\u7a0b\u7ed3\u675f\u524d\uff08\u672c\u9898\u4e2d\u4e3at\uff09\uff0cjoin\u51fd\u6570\u662f\u4e0d\u4f1a\u8fd4\u56de\u7684\uff0c\u56e0\u6b64\u53ef\u77e5\uff0c0123\u4e00\u5b9a\u5728Complete\u4e4b\u524d\u6253\u5370

\u4e24\u8005\u7efc\u5408\uff0c\u7b54\u6848\u4fbf\u77e5

\u8fd9\u662f\u4e24\u4e2a\u7ebf\u7a0b\u5bf9\u540c\u4e00\u4efd\u8d44\u6e90\u8fdb\u884c\u4e86\u4fee\u6539\uff0c\u6709\u53ef\u80fd\u662f\u4e24\u4e2a\u7ebf\u7a0b\u540c\u65f6\u5bf9add\u8fdb\u884c\u4e86\u4fee\u6539\uff0c\u6bd4\u5982\u5f53add = 0\u65f6\uff0c\u4e24\u4e2a\u7ebf\u7a0b\u540c\u65f6\u6267\u884c\u4e86++\u64cd\u4f5c\uff0c\u8fd9\u4e2a\u65f6\u5019\u4f60\u7684add\u6c38\u8fdc\u662f1\u4e86\u3002\u4f60\u53ef\u4ee5\u8fd9\u6837\u58f0\u660eprivate static volatileint add=0;\u8fd9\u6837\u4e00\u4e2a\u7ebf\u7a0b\u7684\u4fee\u6539\u5bf9\u53e6\u5916\u4e00\u4e2a\u7ebf\u7a0b\u662f\u53ef\u89c1\u7684\uff0c\u4e5f\u53ef\u4ee5\u52a0\u9501
synchronized\uff08add\uff09\uff5b test.add++;\uff5d

如果你仅仅是要避开不在主线程里使用这个方法的话,最好的办法就是开辟另外一个线程,在新的线程里调用这个方法就可以了,实现Runnable接口可以开辟新的线程

线程里面的方法调用他,那么他就在那个线程里面执行;如果你有同步的要求的话,建议加上同步的关键字synchronized

你可以建立一个线程类,比如:

public class ImgThread implements Runnable{
        private String imgUrl;
        private Bitmap bitmap = null;
        
        public ImgThread (String imgUrl){
this.imgUrl = imgUrl;
}

public Bitmap getBitmap(){
    return this.bitmap;
}
        
        @Override
public void run() {
    //把loadimage方法里面的操作放到这里
}
}

然后LoadRemoteimage改成这样:

public class LoadRemoteimage{
    private static Bitmap bitmap = null;
    
    public static synchronized Bitmap loadimage(url){
      ImgThread th = new ImgThread(url);
      new Thread(th).start();
    }
}


  • java 鍏充簬绾跨▼鐨勯棶棰
    绛旓細浣滅敤锛歴leep()锛歍hread绫绘柟娉曪紝鐢ㄦ潵鎺у埗鑷韩娴佺▼銆倃ait()锛歄bject绫绘柟娉曪紝璋冪敤姝ゆ柟娉曟椂锛岃璋冨璞¤繘鍏ョ瓑寰呯姸鎬侊紝鐩村埌琚敜閱掓垨绛夊緟鏃堕棿鍒般俷otify()锛氬敜閱掍竴涓鍦ㄧ瓑寰呰瀵硅薄鐨勭嚎绋銆俷otifyAll()锛氬敜閱掓墍鏈夋鍦ㄧ瓑寰呰瀵硅薄鐨勭嚎绋嬨傚紓甯革細wait(),notify()锛java.lang.IllegalMonitorStateException銆倃ait(),...
  • 鍏充簬java涓嚎绋(Thread)闂?
    绛旓細1.sleep()浣垮綋鍓嶇嚎绋(鍗宠皟鐢ㄨ鏂规硶鐨勭嚎绋)鏆傚仠鎵ц涓娈垫椂闂达紝璁╁叾浠栫嚎绋嬫湁鏈轰細缁х画鎵ц锛屼絾瀹冨苟涓嶉噴鏀惧璞¢攣銆備篃灏辨槸濡傛灉鏈塖ynchronized鍚屾鍧楋紝鍏朵粬绾跨▼浠嶇劧涓嶅悓璁块棶鍏变韩鏁版嵁銆傛敞鎰忚鏂规硶瑕佹崟鑾峰紓甯 姣斿鏈変袱涓嚎绋嬪悓鏃舵墽琛(娌℃湁Synchronized)锛屼竴涓嚎绋嬩紭鍏堢骇涓篗AX_PRIORITY锛屽彟涓涓负MIN_PRIORITY锛屽鏋...
  • JAVA绾跨▼闂
    绛旓細public class FirstThread extends Thread { private int i ;public void run(){ //浣犳妸杩欓噷鐪嬫竻妤 for ( i=0; i < 100 ; i++ ){ //Thread瀵硅薄鐨刧etName杩斿洖褰撳墠璇绾跨▼鐨勫悕瀛 System.out.println(getName() + " " + i);} } public static void main(String[] args){ for (int ...
  • JAVA涓嚎绋鐨闂
    绛旓細瀹堟姢绾跨▼,鍗矰aemon Thread, 涓昏鏄寚鐢辫櫄鎷熸満鑷繁浣跨敤鐨勮捣杈呭姪浣滅敤鐨勭嚎绋,姣斿鍨冨溇鍥炴敹绾跨▼(GC绾跨▼),鑰宮ain绾跨▼鍒欏睘浜庣敤鎴风嚎绋,涔熷氨鏄綘鎵璇寸殑闈炲畧鎶ょ嚎绋.瀹堟姢绾跨▼涓嶈繃鏄负鍏朵粬绾跨▼鎻愪緵鏈嶅姟鐨勪竴绉嶇嚎绋嬶紝闄ゆ涔嬪娌℃湁鍏朵粬鐨勭壒鍒姛鑳姐傚鏋滀竴涓▼搴忕殑绾跨▼閮芥槸瀹堟姢绾跨▼锛岄偅涔堣绋嬪簭渚挎病鏈夎繍琛岀殑蹇呰锛岃绋嬪簭...
  • java涓浠涔堝彨鍋氱嚎绋?浠涔堝彨澶氱嚎绋?澶氱嚎绋嬬殑鐗圭偣鏄粈涔
    绛旓細鍏呭垎鍒╃敤 CPU 璧勬簮锛澶氱嚎绋鍙互璁╃▼搴忓厖鍒嗗埄鐢 CPU 璧勬簮锛屾彁楂 CPU 鐨勫埄鐢ㄧ巼锛屼粠鑰屾彁楂樼▼搴忕殑鏁堢巼銆傛柟渚垮鐞嗗鏉傜殑浠诲姟锛氬绾跨▼鍙互璁╃▼搴忓悓鏃跺鐞嗗涓鏉傜殑浠诲姟锛屼粠鑰屾柟渚垮鐞嗗鏉傜殑浠诲姟銆傞渶瑕佹敞鎰忕殑鏄紝澶氱嚎绋嬩篃浼氬甫鏉ヤ竴浜闂锛屼緥濡傜嚎绋嬪畨鍏ㄩ棶棰樸佹閿侀棶棰樼瓑锛屽洜姝ゅ湪缂栧啓澶氱嚎绋嬬▼搴忔椂闇瑕佹敞鎰忚繖浜涢棶棰樸
  • java绾跨▼闂
    绛旓細绾跨▼鏈夊惎鍔ㄥ拰鍋滄鐨勬柟娉曪紝鍨冨溇鍥炴敹鏈哄埗鏄粈涔堝憿锛燂紵(1)鍨冨溇鍥炴敹鏄竴绉嶅姩鎬佸瓨鍌ㄧ鐞嗘妧鏈紝瀹冭嚜鍔ㄥ湴閲婃斁涓嶅啀琚▼搴忓紩鐢ㄧ殑瀵硅薄锛屽綋涓涓璞′笉鍐嶈寮曠敤鐨勬椂鍊,鎸夌収鐗瑰畾鐨勫瀮鍦炬敹闆嗙畻娉曟潵瀹炵幇璧勬簮鑷姩鍥炴敹鐨勫姛鑳姐(2) System.gc();灏辨槸鍛煎彨java铏氭嫙鏈虹殑鍨冨溇鍥炴敹鍣ㄨ繍琛屽洖鏀跺唴瀛樼殑鍨冨溇瀹冨苟涓嶇绾跨▼鍝︾嚎绋嬬殑鍋滄...
  • java绾跨▼鐨勯棶棰
    绛旓細C璇█涓紝閫氳繃浣跨敤if璇彞鏉ュ垽鏂槸鍚﹀嚭鐜颁簡渚嬪锛屽悓鏃讹紝璋冪敤鍑芥暟閫氳繃琚皟鐢ㄥ嚱鏁扮殑杩斿洖鍊兼劅鐭ュ湪琚皟鐢ㄥ嚱鏁颁腑浜х敓鐨勪緥澶栦簨浠跺苟杩涜澶勭悊銆傚叏绋嬪彉閲廍rroNo甯稿父鐢ㄦ潵鍙嶆槧涓涓紓甯镐簨浠剁殑绫诲瀷銆備絾鏄紝杩欑閿欒澶勭悊鏈哄埗浼氬鑷翠笉灏闂銆Java閫氳繃闈㈠悜瀵硅薄鐨勬柟娉曟潵澶勭悊渚嬪銆傚湪涓涓柟娉曠殑杩愯杩囩▼涓紝濡傛灉鍙戠敓浜嗕緥澶栵紝鍒欒繖涓...
  • java绾跨▼闂
    绛旓細瑕佺悊瑙绾跨▼鍜岃繘绋嬬殑姒傚康銆傞偅涔堝氨闇瑕佺煡閬揷pu锛屽綋鐒跺湪姝ゆ槸鍗晆,灏卞彧鏈変竴涓猚pu鐨勭悊璁恒傛墍璋撶殑cpu 灏卞鍚屼汉鐨勫ぇ鑴戜竴鏍凤紝浜虹殑澶ц剳鍦ㄦ煇涓涓椂鍒诲緢鏄庢樉鍙兘鎬濊冧竴浠朵簨鎯呫傛墍浠pu鍦ㄦ煇涓涓椂鍒诲彧鑳芥墽琛屼竴涓繘绋嬶紝鑰岃繘绋嬫槸鏈夊涓嚎绋嬪崟鍏冩瀯鎴愮殑锛屾墍浠ュ湪鏌愪竴涓椂鍒诲彧鑳芥墽琛屼竴涓嚎绋嬨傞偅涔堝彧鑳芥墽琛屼竴涓殑璇濓紝閭d箞...
  • Java澶氱嚎绋嬮棶棰鍙婂鐞(绗旇)
    绛旓細姝婚攣 澶氱嚎绋嬬紪绋嬪湪瀹為檯鐨勭綉缁滅▼搴忓紑鍙戜腑 鍦ㄥ鎴风绋嬪簭瀹炵幇涓娇鐢ㄧ殑姣旇緝绠鍗 浣嗘槸鍦ㄦ湇鍔″櫒绔▼搴忓疄鐜颁腑鍗翠笉浠呮槸澶ч噺浣跨敤 鑰屼笖浼氬嚭鐜版瘮瀹㈡埛绔洿澶氱殑闂 鍙﹀涓涓鏄撳湪鏈嶅姟鍣ㄧ鍑虹幇鐨澶氱嚎绋嬮棶棰鏄斺旀閿 姝婚攣鎸囦袱涓垨涓や釜浠ヤ笂鐨勭嚎绋嬩负浜嗕娇鐢ㄦ煇涓复鐣岃祫婧愯屾棤闄愬埗鐨勭瓑寰呬笅鍘 杩樻槸浠ュ墠闈㈠崼鐢熼棿鐨勪緥瀛愭潵璇存槑...
  • java 澶氱嚎绋嬮棶棰
    绛旓細java澶氱嚎绋骞跺彂闂浜х敓鐨勪富瑕佸師鍥犳槸澶氫釜绾跨▼璁块棶涓涓疄渚嬶紝瀵艰嚧鍏朵腑涓涓嚎绋嬩慨鏀规垨鍒犻櫎杩欎釜瀹炰緥鏃讹紝鍏朵粬绾跨▼浜х敓骞跺彂闂銆傝瑙e喅杩欑骞跺彂闂鏈変袱绉嶆柟娉曪細锛1锛夊姞涓婄嚎绋嬮攣synchronization 锛2锛夎繕鏈変釜涓嶆槸鍔炴硶鐨勫姙娉曪細涓嶇敤鎴愬憳鍙橀噺锛岀敤灞閮ㄥ彉閲
  • 扩展阅读:java的多线程 ... java四种线程池 ... java线程的六种状态图 ... java创建线程四种方式 ... java线程安全问题 ... java多态 ... java 线程面试题 ... java面试高频题 ... 一个初中生学java要多久 ...

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