多執行緒學習(七)

2021-08-30 08:33:37 字數 1384 閱讀 4019

問題

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,那麼執行緒不會被馬上執行,而是...