多线程之间共享数据的实现
生活随笔
收集整理的這篇文章主要介紹了
多线程之间共享数据的实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1:
如果每個線程執行的代碼相同,可以使用同一個Runnable對象,然后將共享的數據放在Runnable里面,來實現數據的共享。 例如買票系統...
2: 如果每個線程執行的代碼不同, 那么就需要不同的Runnable對象,有兩種方式事項這些Runnbale對象之間的數據共享
a: 將共享數據封裝在另一個對象中,然后實現不同的操作,然后將這個新對象傳遞給Runnable對象,每個線程對共享數據的操作也就相應的分配到了那個對象身上去完成。這樣就能夠實現對該數據的各種操作的互斥與通信
b: 將這些Runnbale對象作為某一個類中的內部類,共享數據作為外部類的成員變量,每個線程對共享數據的操作也就分配給了外部類,以便實現共享數據的各種操作的互斥通信。
package com.cn.gbx;import java.util.Date; import java.util.Random; import java.util.Timer; import java.util.TimerTask;public class TestThread {//將共享數據作為外部類的成員變量final private static ShareData data = new ShareData();public static void main(String[] args) {//Runnbale內部類可以共享new Thread(new Runnable() {@Overridepublic void run() {while (true) {data.decrement();}}}).start();new Thread(new Runnable() {@Overridepublic void run() {while (true) {data.increment();}}}).start();} }//將共享數據封裝在另一個對象里面 class ShareData {private int count = 100;public synchronized void decrement() {count--;System.out.println(Thread.currentThread().getName() + " :" + count);}public synchronized void increment() {count++;System.out.println(Thread.currentThread().getName() + " :" + count); } }
?
轉載于:https://www.cnblogs.com/E-star/p/3482170.html
總結
以上是生活随笔為你收集整理的多线程之间共享数据的实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: int main(int argc,ch
- 下一篇: 楚乔传东方忌是什么人 和楚乔又有怎样的关