問題
1.賣票系統(如果每個執行緒執行的**相同,可以使用同乙個runnable物件,這個runnable物件中有那個共享資料)
解決
public class multithreadsharedatastudy }
class ticketsystem implements runnable
} }}
2.設計4個執行緒,其中兩個執行緒對j加1,另外兩個執行緒對j減1,寫出程式。(如果每個執行緒執行的**不同,需要不同的runnable物件)
解決
<1> 將共享資料封裝在另外乙個物件中,然後將這個物件逐一傳給runnbale物件,每個執行緒對共享資料的操作方法也分配到那個物件身上去完成,這樣容易實現對資料進行各個操作的互斥和通訊。
public class multithreadsharedatastudy }
class runnable1 implements runnable
@override
public void run() }
class runnable2 implements runnable
@override
public void run() }
class sharedata
public synchronized void decrease()
}
<2> 將runnable物件作為某個類的內部類,共享資料作為外部類的成員變數,每個執行緒對資料操作的方法也分配給外部類,實現對共享資料的操作的互斥和通訊,作為內部類的各個runnable物件呼叫外部類這些方法。
public static sharedata data1 = new sharedata();
public static void main(string args)
}).start();
new thread(new runnable()
}).start(); }
}class sharedata
public synchronized void decrease()
}
<3>第三種方式
public class multithreadsharedatastudy
public synchronized void increase()
public synchronized void decrease()
class increase implements runnable
} class dec implements runnable }
}
java多執行緒學習 七
總結 本篇主要介紹內部類和多執行緒以及鎖物件變化時候的情況 package chapter2.innertest2 import chapter2.innertest2.outclass.innerclass1 import chapter2.innertest2.outclass.innercla...
C 多執行緒學習筆記七
task int task task.factory.startnew task.wait console.writeline task.result task int task task.factory.startnew var task2 task.continuewith int t cons...
C 多執行緒基礎學習筆記(七)
一 std async和std future的用法 std async是乙個函式模板,std future是乙個類模板 std async std launch async,mythread 如果std async 的第乙個引數改成std lauch deferred,那麼執行緒不會被馬上執行,而是...