java 共享内存变量问题
我现在想做个类似于负载均衡轮询,目前只需要rr 轮叫(Round Robin)这种最简单的方式,即什么都不用管,1显示完了,下次访问显示2,再显示3,都显示完了,再轮回到1,于是我做了下面一个小例子,我知道我需要一个东西来保存我上次访问的位置,就叫访问位置因子吧,我不需要文件或者数据库这种额外的存储介质,我只要放到内存中。
问题来了,下面的例子始终会打印1,而不是1,2,1,2.....,这是因为每次又把i重新设置为了-1,我想知道我怎样存储这个访问位置因子(i),比如我访问过0位置,那么下次访问i是从0开始的,而不是-1,谢谢
问题来了,下面的例子始终会打印1,而不是1,2,1,2.....,这是因为每次又把i重新设置为了-1,我想知道我怎样存储这个访问位置因子(i),比如我访问过0位置,那么下次访问i是从0开始的,而不是-1,谢谢
public static Integer i ;
static{
i = -1;
}
public static void main(String[] args) {
Vector<Integer> v = new Vector<Integer>();
v.add(1);
v.add(2);
i = (i +1)%v.size();
System.out.println(v.get(i));
i ++;
if(i >= v.size())
i = -1;
}
...全文
相关推荐
Java共享内存并行编程
然而,直接使用Java线程API进行并行编程虽然直观,但在实际应用中往往难以管理和优化线程间的同步问题。
深入理解Java内存模型
共享内存并发模型中,线程之间共享变量,并通过读写这些共享变量来隐式进行通信;而在消息传递并发模型中,线程之间不共享变量,线程间通信必须通过发送和接收消息来实现。
深度剖析java内存模型
Java内存模型使用共享内存模型,这意味着线程之间的通信是通过共享内存来完成的。
Java内存模型
- **局部变量**:局部变量不在线程间共享,因此不存在可见性问题。3.
java内存模型
Java选择采用共享内存模型,这意味着线程通过共享堆内存中的变量进行通信。然而,这种通信并不是直接的,而是隐式的,这可能导致内存可见性问题。


Java SE
