07-多个线程之间共享数据的方式探讨

package cn.itcast.demo.thread;

public class MultiThreadShareData {
	public static void main(String[] args) {
		// 共享的数据
		ShareData data = new ShareData();
		
		for (int i=0; i<2; i++) {
			// 线程1
			new Thread(new MyRunnableIncr(data)).start();
			// 线程2
			new Thread(new MyRunnableDecr(data)).start();
		}
	}
}

// 线程数据自增代理类
class MyRunnableIncr implements Runnable {
	private ShareData data;
	public MyRunnableIncr(ShareData data) {
		this.data = data;
	}
	@Override
	public void run() {
		data.increment();
	}
	public MyRunnableIncr() {}
}
//线程数据自减代理类
class MyRunnableDecr implements Runnable {
	private ShareData data;
	public MyRunnableDecr(ShareData data) {
		this.data = data;
	}
	@Override
	public void run() {
		data.decrement();
	}
	public MyRunnableDecr() {}
}

// 自增和自减业务类
class ShareData {
	private int j = 0;
	// 自增
	public synchronized void increment() {
		for (int i=0; i<50; i++) {
			j++;
			System.out.println("[++]j====" + j);
		}
	}
	// 自减
	public synchronized void decrement() {
		for (int i=0; i<50; i++) {
			j--;
			System.out.println("[--]j====" + j);
		}
	}
}

打印结果:

[++]j====1
[++]j====2
[++]j====3
[++]j====4
[++]j====5
[++]j====6
[++]j====7
[++]j====8
[++]j====9
[++]j====10
[++]j====11
[++]j====12
[++]j====13
[++]j====14
[++]j====15
[++]j====16
[++]j====17
[++]j====18
[++]j====19
[++]j====20
[++]j====21
[++]j====22
[++]j====23
[++]j====24
[++]j====25
[++]j====26
[++]j====27
[++]j====28
[++]j====29
[++]j====30
[++]j====31
[++]j====32
[++]j====33
[++]j====34
[++]j====35
[++]j====36
[++]j====37
[++]j====38
[++]j====39
[++]j====40
[++]j====41
[++]j====42
[++]j====43
[++]j====44
[++]j====45
[++]j====46
[++]j====47
[++]j====48
[++]j====49
[++]j====50
[--]j====49
[--]j====48
[--]j====47
[--]j====46
[--]j====45
[--]j====44
[--]j====43
[--]j====42
[--]j====41
[--]j====40
[--]j====39
[--]j====38
[--]j====37
[--]j====36
[--]j====35
[--]j====34
[--]j====33
[--]j====32
[--]j====31
[--]j====30
[--]j====29
[--]j====28
[--]j====27
[--]j====26
[--]j====25
[--]j====24
[--]j====23
[--]j====22
[--]j====21
[--]j====20
[--]j====19
[--]j====18
[--]j====17
[--]j====16
[--]j====15
[--]j====14
[--]j====13
[--]j====12
[--]j====11
[--]j====10
[--]j====9
[--]j====8
[--]j====7
[--]j====6
[--]j====5
[--]j====4
[--]j====3
[--]j====2
[--]j====1
[--]j====0
[++]j====1
[++]j====2
[++]j====3
[++]j====4
[++]j====5
[++]j====6
[++]j====7
[++]j====8
[++]j====9
[++]j====10
[++]j====11
[++]j====12
[++]j====13
[++]j====14
[++]j====15
[++]j====16
[++]j====17
[++]j====18
[++]j====19
[++]j====20
[++]j====21
[++]j====22
[++]j====23
[++]j====24
[++]j====25
[++]j====26
[++]j====27
[++]j====28
[++]j====29
[++]j====30
[++]j====31
[++]j====32
[++]j====33
[++]j====34
[++]j====35
[++]j====36
[++]j====37
[++]j====38
[++]j====39
[++]j====40
[++]j====41
[++]j====42
[++]j====43
[++]j====44
[++]j====45
[++]j====46
[++]j====47
[++]j====48
[++]j====49
[++]j====50
[--]j====49
[--]j====48
[--]j====47
[--]j====46
[--]j====45
[--]j====44
[--]j====43
[--]j====42
[--]j====41
[--]j====40
[--]j====39
[--]j====38
[--]j====37
[--]j====36
[--]j====35
[--]j====34
[--]j====33
[--]j====32
[--]j====31
[--]j====30
[--]j====29
[--]j====28
[--]j====27
[--]j====26
[--]j====25
[--]j====24
[--]j====23
[--]j====22
[--]j====21
[--]j====20
[--]j====19
[--]j====18
[--]j====17
[--]j====16
[--]j====15
[--]j====14
[--]j====13
[--]j====12
[--]j====11
[--]j====10
[--]j====9
[--]j====8
[--]j====7
[--]j====6
[--]j====5
[--]j====4
[--]j====3
[--]j====2
[--]j====1
[--]j====0

 

posted @ 2017-08-17 14:51  半生戎马,共话桑麻、  阅读(102)  评论(0)    收藏  举报
levels of contents