多线程下处理变量共享的几种方式
Posted hongchengshise
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程下处理变量共享的几种方式相关的知识,希望对你有一定的参考价值。
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对象作为锁 // 此处填写需要同步的代码块 } } }
锁的重入指的是:当一个线程请求获得已经被其他线程获得的锁的时候,它就会被阻塞
,但是如果一个线程请求一个它已经获得的锁,那么这个请求就会成功。
以上是关于多线程下处理变量共享的几种方式的主要内容,如果未能解决你的问题,请参考以下文章