0 0

怎样实现java多进程读写共享资源20

例如有一个共享数据,比如是private static int x  = 100.

现有大量线程对其进行读或者写,80%可能是读,20%可能是写。

请问除了对读和写的方法如getX、setX方法加synchronized关键字进行同步锁以外,还有没有其他更好或者说在生产环境中经常采纳的方法?

感激不尽。
2012年3月28日 22:07

4个答案 按时间排序 按投票排序

0 0

使用concurrent包

2012年4月13日 21:24
0 0

让你的线程实现runnable接口,然后把你的private static int x  = 100写在这个线程类里面,同一个runnable对象可以传递给多个线程,可以实现资源共享

2012年4月13日 17:14
0 0

你可以考虑用akka提供的smt (software transaction memery)。建议你看看这篇blog:
http://jackycheng2007.iteye.com/blog/1463256

2012年3月29日 20:36
0 0

AtomicInteger
ReentrantReadWriteLock
详见jdk api

2012年3月29日 08:34

相关推荐

    多进程共享临界资源

    根据给定的信息,本文将详细解释“多进程共享临界资源”的实现原理和技术要点,包括如何设计和实现三个进程——两个用户进程与一个管理进程之间的交互机制,以及这些进程是如何遵守临界区访问准则的。 ### 一、背景...

    多进程写sqlite互斥解决方案代码

    对于多进程环境,可以使用操作系统的互斥锁,例如在Unix/Linux系统中的`fcntl`函数进行文件锁操作,或者使用`pthread_mutex_t`在进程间共享内存区域实现互斥。在Python中,可以使用`multiprocessing.Lock()`来实现跨...

    java进程间管道通信1

    Java进程间的管道通信是一种进程间通信(IPC,Inter-Process Communication)的方式,它允许不同的Java进程之间通过共享的管道进行数据传输。...通过理解这些概念和注意事项,开发者可以构建出可靠的多进程通信系统。

    IPC.rar_IPC_java i_java ipc_java共享内存_共享内存

    在多进程或多线程环境中,进程间通信是不同进程之间交换数据的方式。Java作为一种跨平台的语言,提供了多种IPC机制,如管道、套接字、信号量、消息队列以及共享内存等。 共享内存是一种直接且高效的IPC方式,它允许...

    基于Java的进程通信.zip

    6. **信号量(Semaphores)和互斥锁(Mutexes)**:Java的`java.util.concurrent`包提供了`Semaphore`和`ReentrantLock`等同步原语,可以用于控制对共享资源的访问,实现进程间的同步。 7. **RMI(Remote Method ...

    操作系统模拟:读写者问题

    在这个场景中,"读写者问题"的Java实现展示了如何在多线程环境下通过读写锁有效地控制对共享资源的访问,保证数据的一致性和正确性。通过这种方式,我们可以在操作系统层面模拟并发控制,理解读写者问题的解决方案,...

    操作系统进程通信Java源码

    7. **信号量(Semaphores)** 和 **互斥锁(Mutexes)**:Java的`java.util.concurrent`包提供了`Semaphore`和`ReentrantLock`等类,用于进程间同步,防止多个进程同时访问共享资源。 8. **文件共享**:进程可以...

    java进程通信.zip

    6. **信号量(Semaphores)**和**互斥锁(Mutexes)**:Java的`java.util.concurrent`包提供了`Semaphore`和`ReentrantLock`等类,它们用于控制对共享资源的访问,是实现进程同步的重要工具。 7. **文件共享**:...

    java进程间tx1

    Java进程间通信(IPC,Inter-Process Communication)是多进程应用程序中实现数据交换的重要机制。在Java中,虽然原生的API对进程间通信的支持不如C++或C那样直接,但依然提供了多种方式来实现这一目标。以下是几种...

    Java模拟操作系统(内存管理,进程管理,文件管理,进程通信)

    Java模拟操作系统是一个基于Java编程语言实现的微型操作系统模型,它主要涵盖了四个核心领域:内存管理、进程管理、文件管理和进程通信。这样的项目旨在帮助开发者理解操作系统的工作原理,并提供了一个实践平台来...

    基于java的进程通信.zip

    在Java编程语言中,进程通信(Process Communication)是多进程应用程序之间交换数据的重要机制。Java提供了多种方式来实现进程间的通信,这些方法使得不同的程序能够协同工作,共享资源,提高系统的整体效率。以下...

    简要分析Java多进程编程的并发控制

    Java多进程编程中的并发控制主要关注的是如何在多个独立的程序之间有效地共享资源,特别是内存。在Java中,虽然直接的内存管理不是语言的核心特性,但是通过特定的API,我们仍然可以实现进程间的内存共享。这里我们...

    linux使用消息队列实现进程间双向通信

    在Linux操作系统中,进程间通信(IPC,Inter-Process Communication)是多个进程共享数据或交换信息的一种机制。本文将深入探讨如何利用消息队列这一IPC机制实现进程间的双向通信。消息队列允许进程异步地发送和接收...

    Android通过共享用户ID来实现多Activity进程共享

    通过共享用户ID(sharedUserId),Android系统允许来自相同应用的不同进程访问彼此的数据,实现了不同Activity间的通信和资源共享。这篇博客文章《Android通过共享用户ID来实现多Activity进程共享》将深入探讨这一...

    android多进程通信二

    如果数据交换不需要实时性,可以通过共享文件实现多进程通信。每个进程都可以读写同一个文件,但需要注意同步问题,避免数据冲突。Android提供了文件系统和SQLite数据库作为文件共享的方式。 **6. Broadcast Intent...

    java源码:进程通信.rar

    - **信号量**:用于控制对共享资源的访问,防止多个线程同时访问。 4. **Java中的进程通信API**: - `java.lang.Process`:表示操作系统中的进程,提供了读写进程输入/输出流的方法,可用于进程间通信。 - `java...

    操作系统课程设计-Spooling技术Java实现

    在计算机科学领域,SPOOLing(Simultaneous Peripheral Operations On Line)技术是一种改善I/O(输入/输出)效率的机制,它使得多个进程可以共享有限的独占型外围设备,如打印机、磁带机等。在本课程设计中,我们将...

    commons-mmf.rar_java nio_java共享内存_共享内存

    在Java中,可以通过`java.nio.MappedByteBuffer`类来实现共享内存功能,这被称为内存映射文件(Memory-Mapped File,MMF)。 `MappedByteBuffer`是NIO中的一种特殊缓冲区,它将文件的一部分映射到内存中,使得文件...

    OS进程管理最终强化版(Java)

    本资源“OS进程管理最终强化版(Java)”显然聚焦于如何利用Java语言来实现这些功能。下面我们将深入探讨与这个主题相关的多个知识点。 首先,我们需要理解什么是进程。在计算机系统中,进程是程序的一次执行实例,...

    在Windows下基于共享内存实现进程间通信

    C#程序可以创建或打开已有的映射文件,通过`CreateViewStream`或`MapViewOfFile`方法获取一个流,进而读写共享内存。C++和C#之间共享内存的交互,需要确保双方对共享内存的访问方式和同步策略保持一致。 在实际开发...

Global site tag (gtag.js) - Google Analytics