Java如何在多线程之间共享数据呢?
下文笔者讲述java中多线程共享数据的方法分享,如下所示
多线程共享数据的实现思路:
只需在方法外部定义一个变量
然后每个线程方法中都调用此变量
注意事项:
为了保证线程安全,方法必须加上synchronized关键字
例:多线程共享变量
/**
* 两个线程执行的方法不一样
*/
public class MultiThreadShareData {
// 库存数字---多线程共享数据
private int j = 10;
public static void main(String[] args) {
MultiThreadShareData multiThreadShareData = new MultiThreadShareData();
for (int i = 0; i < 2; i++) {
//增加
new Thread(multiThreadShareData.new ShareData1()).start();
//减少
new Thread(multiThreadShareData.new ShareData2()).start();
}
}
//自增
private synchronized void Inc() {
j++;
System.out.println(Thread.currentThread().getName() + " inc " + j);
}
//自减
private synchronized void Dec() {
j--;
System.out.println(Thread.currentThread().getName() + " dec " + j);
}
class ShareData1 implements Runnable {
@Override
public void run() {
for (int i = 0; i < 5; i++) {
Inc();
}
}
}
class ShareData2 implements Runnable {
@Override
public void run() {
for (int i = 0; i < 5; i++) {
Dec();
}
}
}
}
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


