多进程共享连续计数

Andy84920 2007-05-22 09:56:03
多个JAVA进程,如何能取到同一个连续的计数并更新,如A进程取到1后改成2,B进程取到2后改成3...如何才能做到呢?类似于共享内存。
...全文
297 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
lifeisgame 2007-06-02
  • 打赏
  • 举报
回复
这个问题其实就是多个线程执行一个方法。
你可以写一个计数的方法,在方法体里面对一个全局变量进行+操作。
为了避免出现2个或多个线程同时操作同一个数,导致计算错误,你可以把这个方法写成同步方法,或者加上同步快。

比如这样:

class Count implements Runnable
{
private int i = 0 ;

public synchronized void counter()
{
i = ++i ;
System.out.println(i);
}

public void run()
{
counter();
}

public static void main(String[] args)
{
Count c = new Count();
Thread t1 = new Thread(c);
t1.start();
Thread t2 = new Thread(c);
t2.start();
Thread t3 = new Thread(c);
t3.start();
Thread t4 = new Thread(c);
t4.start();
}
}
huoyin 2007-06-02
  • 打赏
  • 举报
回复
我在想你能不能把这个数字写入一个文件或数据库,在每个进程修改之前都试图加一个独占锁...
「已注销」 2007-06-02
  • 打赏
  • 举报
回复
线程和进程还是有区别的
同意楼上的
不同的进程甚至都不在一个jvm里运行,synchronized,voliate都没有意义

可以考虑通过socket端口来实现
kingsure 2007-06-01
  • 打赏
  • 举报
回复
lz说的是进程,而不是线程~~~~~
toolsmith 2007-06-01
  • 打赏
  • 举报
回复
多线程的共享数据有个关键字voliate
allenblade 2007-05-25
  • 打赏
  • 举报
回复
同意上面的加synchronized标示
likgui 2007-05-25
  • 打赏
  • 举报
回复
关注
zuguanqun 2007-05-25
  • 打赏
  • 举报
回复
加把锁啊,呵呵
比如设置一个标志为,线程开始调用设置为true ,关闭线程的时候设置为false

任何想写这个方法的时候都要判断一下这个标志位
frilly 2007-05-23
  • 打赏
  • 举报
回复
public class Test implements Runnable
{

int lens = 0;
public Test(int len)
{
this.lens = len;
}
public void run()
{

while(lens>0)
{
System.out.println(Thread.currentThread().getName()+ lens-- +"已定出!");
try{Thread.sleep(100);}catch(Exception e){}
}

System.out.println("票已售完!");

}

public static void main(String args[])
{
Test test = new Test(100);
Thread t1 = new Thread(test,"1号售票处:");
Thread t2 = new Thread(test,"2号售票处:");
Thread t3 = new Thread(test,"3号售票处:");
t1.start();
t2.start();
t3.start();
}
}


参考下 三个窗口同时售100张票的情况
wssssw 2007-05-23
  • 打赏
  • 举报
回复
定义一个synchronized函数来操作你要同步的代码
比如说:public synchronized int add(){}
CrazyGou 2007-05-22
  • 打赏
  • 举报
回复
http://www-128.ibm.com/developerworks/cn/java/l-memshare/index.html

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧