-------
android培訓
、ios培訓
、期待與您交流! ----------
一、執行緒同步問題
public class testsynchthread implements runnablecatch(interruptedexception e)
}
/*m2方法加鎖之後,程式最終的輸出結果是:子執行緒執行結果k:1000,main執行緒執行結果:1000,為什麼main執行緒也是1000呢,是因為t1執行緒執行完成之後,緊接著執行m2方法,但是m2方法卻睡了,此時,直接跳入執行下乙個語句,輸出了結果。但是如果,t1執行緒睡眠的時間大於m2方法的休眠時間,那麼結果又會出現不同
*/
public synchronized static void m2()catch(interruptedexception e)
k=2000;
}
public static void main(string args)
public void run()}//輸出結果為:子執行緒執行結果k:1000;main執行緒執行結果:2000;
分析原因:首先執行t1執行緒,k的值變為1000;此時main執行緒同時也在執行,但是由於m2方法中,執行緒sleep為2秒,而t1執行緒只sleep 1秒,所以t1執行緒先輸出了「子執行緒執行結果」,之後m2方法在完成2秒的睡眠後,開始執行,並將k的值設定為2000,最後主線程輸出結果為2000。這裡如果m2方法不加鎖,就需要根據睡眠時間的長短來判斷k的值了
但是如果m2方法此時加鎖之後,輸出結果就會出現不同。
二、生產者消費者問題
public class testsynchthread2
}class wotou
public string tostring()
}class wotousynstackcatch(interruptedexception e)
}
this.notify();
arrwt[index]=wt;
index++;
}
public synchronized wotou pop()catch(interruptedexception e)
}
this.notify();
index--;
return arrwt[index];
}
}class producer implements runnable
public void run()catch (interruptedexception e)
}
}
}class consumer implements runnable
public void run()catch (interruptedexception e)
}
}
}//錯誤提示問題說明:
//錯誤提示問題說明:
出現這個錯誤的原因主要是:
程式裡面少寫了乙個大括號
黑馬程式設計師 執行緒
多執行緒有兩種實現方法,分別是繼承thread類與實現runnable介面 同步的實現方面有兩種,分別是synchronized,wait與notify wait 使乙個執行緒處於等待狀態,並且釋放所持有的物件的lock。sleep 使乙個正在執行的執行緒處於睡眠狀態,是乙個靜態方法,呼叫此方法要捕...
黑馬程式設計師 執行緒
我理解看來這個這個就是乙個程式可以同時執行不同的 我的理解就是讓程式可以同時執行不同的 至於執行的順序就看系統怎麼調配。第一種方式 繼承thread 第二種方式 1.定義實現runnable介面 2.覆蓋runnable介面當中的run方法 將執行緒要執行的 都放到run方法當中去。3.通過thre...
黑馬程式設計師 執行緒 多執行緒
asp.net android io開發 net培訓 期待與您交流!執行緒概念 執行緒是程序中執行運算的最小單位,亦即執行處理機排程的基本單位。如果把程序理解為在邏輯上作業系統所完成的任務,那麼執行緒表示完成該任務的許多可能的子任務之一。引入執行緒的好處 1 易於排程。2 提高併發性。通過執行緒可方...