我是學習多線程,我有點困惑的幾件事情,多個線程訪問方法
例如
public class Example{
public void function1(){
int toPrint = 0;
System.out.println(toPrint);
for(int i = 0; i < 10; i++)
System.out.println("hello stackOverflow!");
}
public syncrhonized void function2(){
...
}
}
public static void main(String[] args) {
Example example = new Example();
for (int i = 0; i < 10; i++) {
RunningThread thread = new RunningThread(example);
thread.start();
}
}
像這樣
public class RunningThread{
Example instanceClass;
public RunningThread(Example instanceClass){
this.instanceClass = instanceClass;
public void run(){
while(true){
instanceClass.function1();
instanceClass.function2();
}
}
現在循環我不能顯示圖像,但我想在我的dubts清楚,所以
如果我開始N個線程,我必須打算這種情況
_______________________________ ______________________________
| thread1 | | thread..N |
................................. ................................
| function1 | | function1 |
| int toPrint = 0; | | int toPrint = 0; |
| System.out.println(toPrint); | | System.out.println(toPrint);|
| for(int i = 0; i < 10; i++) | | for(int i = 0; i < 10; i++) |
| System.out.println(); | | System.out.println(); |
--------------------------------- --------------------------------
什麼,我的意思是說,每個線程都有自己的流量(的功能1自己的「副本」),並整理他們將等待執行鎖定function2()
後?
或
_______________________________
| thread1 and thread..N |
.................................
| function1 |
| int toPrint = 0; |
| System.out.println(toPrint); |
| for(int i = 0; i < 10; i++) |
| System.out.println(); |
---------------------------------
在這種方式的每個線程shares
相同的功能和內容(因此,例如一個線程初始化值和另一個線程不進行初始化)和精加工後,他們將等待執行鎖定的function2()
?
的執行順序將始終尊重,第一功能1和功能2?
不好意思,如果這麼長,反正先謝謝了。
我在代碼中看不到任何線程。此外,我沒有看到多個線程調用'function2'。 – 2014-11-03 13:12:59
請給我們顯示完整的代碼。 – TheLostMind 2014-11-03 13:13:32
等待,我會插入當我開始線程,但我認爲這是次要的... – user582040 2014-11-03 13:14:29