RT
注意,我问的不是线程同步啊 ! ! ! ... ...
网上搜了一下貌似没有搜到... 
网上看到有一处说到 “jdk自身没有提供进程同步的工具类”,不知是否真是这样??
如果真的“jdk自身没有提供进程同步的工具类”,请大家明确告诉我就行。如果有 进程同步 的方案,请大家指教下,给出任何 文章、链接、代码、关键字 都行。感谢大家。

解决方案 »

  1.   

    进程之间想直接同步会很麻烦实践中,我也遇到过同步的问题,几个系统使用同一套流水号,但系统之间的流水号不能重复。这个需求应该和楼主的需求是一相同的。如果是这样,你可以借使用 MySQL数据库。在MySQL 中,有 get_lock/release_lock 两个函数,可以对字符串进行加锁,使用上和 synchronized 很相似,只是你要想得到锁时,必须先连接数据库,然后通过JDBC调用 get_lock 函数,完成之后必须保证释放锁(我通过是用 try{  getLock("lock name")......} finally{ releaseLock("lock name"); } 这样的语句),否则你的某个锁可能永远用不了。这样不但可以在不同进程之间进行同步,也支持不同服务器之间进行同步。如果不想用数据库,你可以自己写一个同步服务器,基本原理与数据库获取锁一样。
      

  2.   

    那也就是说,java 没有提供 简单方便的方式来做 进程同步的事情喽??只能自己通过 一些别的技术来实现类似的效果?
      

  3.   

    那也就是说,java 没有提供 简单方便的方式来做 进程同步的事情喽??只能自己通过 一些别的技术来实现类似的效果?反正以我所掌握的知识来说,直接进行进程同步是不可行的。
    要想进行互斥,可以使用数据库锁或者第三者的获取锁的服务器;如果想进程之间共享数据,可以把数据放到数据库中进行共享。当然,JAVA中的同步,还包括 wait/notify、join 等功能,这些功能要想通过我说的办法实现,应该会很难。祝楼主好运
      

  4.   

    我也是 问一下,确认一下。
    我只是简单的 同一台机器的进程间的同步,我想到的方式是 jni 调用 系统API 进行进程同步,还是比较方便的。
    但是 我不确定java里面是否有线程的进程同步的机制。如果java有现成的的机制,而 我又从jni绕一下 就显得太业余了...
      

  5.   

    我也是 问一下,确认一下。
    我只是简单的 同一台机器的进程间的同步,我想到的方式是 jni 调用 系统API 进行进程同步,还是比较方便的。
    但是 我不确定java里面是否有线程的进程同步的机制。如果java有现成的的机制,而 我又从jni绕一下 就显得太业余了...使用JNI 这个办法我倒是没有想到
    只是对操作系统不太了解,不知道怎么做好,但感觉上,用了JNI之后不好跨平台了,并且数据共享可能会有点麻烦我的项目里要用到数据库,并且数据库又提供了这个功能,于是就用它了,并且还可以跨服务器,但是无法提供 wait/notify、join 这类功能祝你好运吧!
      

  6.   

    java并没有直接提供进程间同步的方法。
      

  7.   

    java不是运行在jvm,还能进程同步啊,估计线程也不是真正的线程,也是jvm模拟的
      

  8.   

    文件锁的简单实现方法。
    RandomAccessFile raf=new RandomAccessFile("c:/aa.txt","rw");
    FileLock lock=raf.getChannel().lock();
                   //需要同步的代码
    lock.release();
      

  9.   


    不过,好象还是无法支持 wait/notify,join 等机制哦,这得另外想法子
      

  10.   

    http://www.cnblogs.com/CareySon/archive/2012/04/14/Process-SynAndmutex.htmlhttp://www.cnblogs.com/sonic4x/archive/2011/07/05/2098036.htmlhttps://www.zhihu.com/question/36529093
      

  11.   


    线程同步时只有一个线程在跑?你们体育老师给你们上计算机课时是这么教的吗?
    你想啊,如果是双线程的话,一个线程在执行的时候另一个线程是不是在等待?
    进程也一样,一个进程在运行了,另一个进程是不是也停止了?个人观点!看你怎么理解咯?我的意思
    线程不同步时,CPU里也只能是一个线程在跑
    当然这是单CPU、单核心的情况下