码迷,mamicode.com
首页 > 编程语言 > 详细

多线程下处理变量共享的几种方式

时间:2019-02-21 00:33:22      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:定义   static   others   多线程   变量共享   内存   oca   col   对象   

1.尽量将共享变量(共享变量指的是在堆内存上创建的对象或者数组,包括成员变量、静态变量和数组元素。)定义为局部变量。

2.如果多线程只是读取变量,可以定义全局final。

3.使用ThreadLocal将变量创建为线程私有。

4.加锁

public class Increment {

    private int i;

    public void increase() {
        synchronized (this) {   //使用this作为锁
            i++;
        }
    }

    public static void anotherStaticMethod() {
        synchronized (Increment.class) {   //使用Class对象作为锁
            // 此处填写需要同步的代码块
        }
    }
}

锁的重入指的是:当一个线程请求获得已经被其他线程获得的锁的时候,它就会被阻塞,但是如果一个线程请求一个它已经获得的锁,那么这个请求就会成功。

多线程下处理变量共享的几种方式

标签:定义   static   others   多线程   变量共享   内存   oca   col   对象   

原文地址:https://www.cnblogs.com/hongchengshise/p/10409815.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!