Java语言规范中指出:为了获得最佳速度,允许线程保存共享成员变量的私有拷贝,而且只当线程进入或者离开同步代码块时才与共享成员变量的原始值对比。
谁能深入浅出的解释下这个是什么意思吗?
Java:共享成员变量是什么意思啊?
答案:5 悬赏:40 手机版
解决时间 2021-03-02 14:43
- 提问者网友:呐年旧曙光
- 2021-03-02 08:35
最佳答案
- 五星知识达人网友:上分大魔王
- 2021-03-02 09:07
Java共享成员变量是指在同一个类中或者不同包下的类,使用同一个变量进行操作。示例如下:
public class Car {
private String color; // 定义汽车颜色,全局变量
private int numLuntai; // 定义汽车轮胎数,全局变量
public Car(String color, int numLuntai){
super();
this.color = color;
this.numLuntai = numLuntai;
}
public void run() {
System.out.println(this.numLuntai+ "个轮子的" +this.color + "轿车在马路上行驶着");
}
}
public class ClassTest {
public static void main(String[] args){
Car bmw = new Car("黑色", 4); // 创建一个轿车对象,名字为bmw
bmw.run();
}
}
public class Car {
private String color; // 定义汽车颜色,全局变量
private int numLuntai; // 定义汽车轮胎数,全局变量
public Car(String color, int numLuntai){
super();
this.color = color;
this.numLuntai = numLuntai;
}
public void run() {
System.out.println(this.numLuntai+ "个轮子的" +this.color + "轿车在马路上行驶着");
}
}
public class ClassTest {
public static void main(String[] args){
Car bmw = new Car("黑色", 4); // 创建一个轿车对象,名字为bmw
bmw.run();
}
}
全部回答
- 1楼网友:爱难随人意
- 2021-03-02 14:25
两个线程同时获取变量,
获取之后.第一个线程++操作,然后进入睡眠.
这时,第二个线程,也获取到了,做--操作.睡眠.
第一个线程醒来打印的是做过2次运算的数据(++,--)所以是0
第二线程也一样.
这涉及到多线程安全问题.
- 2楼网友:英雄的欲望
- 2021-03-02 12:56
没有遇到过这个问题,我理解共享成员变量应该是类变量也就是类静态变量
- 3楼网友:拾荒鲤
- 2021-03-02 11:46
建议你看看 计算机操作系统 这本书 里面关于进程的这一块,同步进程,共享代码块,共享变量。讲得很详细
- 4楼网友:毛毛
- 2021-03-02 10:45
成员变量:
如果一个变量是成员变量,那么多个线程对同一个对象的成员变量进行操作,这多个线程是共享一个成员变量的。
局部变量:
如果一个变量是局部变量,那么多个线程对同一个对象进行操作,每个线程都会有一个该局部变量的拷贝。他们之间的局部变量互不影响。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯