多个JAVA进程,如何能取到同一个连续的计数并更新,如A进程取到1后改成2,B进程取到2后改成3...如何才能做到呢?类似于共享内存。

解决方案 »

  1.   

    http://www-128.ibm.com/developerworks/cn/java/l-memshare/index.html
      

  2.   

    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张票的情况
      

  3.   

    定义一个synchronized函数来操作你要同步的代码
    比如说:public synchronized int add(){}
      

  4.   

    加把锁啊,呵呵
    比如设置一个标志为,线程开始调用设置为true ,关闭线程的时候设置为false任何想写这个方法的时候都要判断一下这个标志位
      

  5.   

    多线程的共享数据有个关键字voliate
      

  6.   

    线程和进程还是有区别的
    同意楼上的
    不同的进程甚至都不在一个jvm里运行,synchronized,voliate都没有意义可以考虑通过socket端口来实现
      

  7.   

    这个问题其实就是多个线程执行一个方法。
    你可以写一个计数的方法,在方法体里面对一个全局变量进行+操作。
    为了避免出现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();
    }
    }