首页 / 知识
关于多线程:Java IPC最佳实践
2023-04-14 16:05:00

Best practice for Java IPC在多线程Java应用程序中进行进程间通信的最佳方法是什么。 它应该是高性能的(因此请不要使用JMS),易于实现且可靠,因此 您能澄清一下吗?您是指单个JVM中的IPC吗? (是的,有多个线程,但是在OS级别只有一个进程。)或者您是说多个JVM? (以及真正的OS级进程间通信。) 如果是第一个,那么可能是java.util.concurrent之外的东西,例如ConcurrentLinkedQueue可以解决问题。 (我成功地从java.util.concurrent中的类在线程之间传递了消息。) 如果稍后再讲,那么我只是猜测并建议您看一下RMI,尽管我认为它并不完全可靠-您必须像这样处理更多的"动手操作",例如。 假设场景1是JVM,那么实际上确实是多个线程,尤其是各种Queue实现,是查找java.util.concurrent的地方。但是,在此之上的抽象可能很好,并且Jetlang看起来非常有趣,轻量级的Java消息传递。 我刚刚在github(http://github.com/caplogic/mappedbus)上添加了MappedBus,这是一个高效的IPC库,它使多个Java进程/ JVM可以通过交换消息进行通信,并且使用内存映射文件运输。吞吐量已测量为4000万条消息/秒。 您应该使用生产者/消费者队列。这样可以避免多线程编程的陷阱:竞争条件和死锁。此外,如果使用Disruptor或MentaQueue等无锁队列,它不仅更容易,更干净,而且速度也更快。我写了一篇博客文章,在其中详细讨论了这个问题,并展示了如何获得<100纳秒的延迟:2位纳秒延迟的线程间通信。 我建议研究整个java.util.concurrent包,该包具有用于处理并发性的多个类以及线程之间的不同通信方式。一切都取决于您要实现的目标,因为您的问题相当笼统。 |
最新内容
相关内容
linux多线程下载命令?
linux多线程下载命令?,软件,工具,平台,中心,系统,代理,网络,网站,手机,官方网站,从linux服务器中下载或上传文件wget是linux下一个从网络上自linux使用命令的方法?
linux使用命令的方法?,系统,信息,工具,标准,数据,命令,左下角,目录,文件夹,图标,linux的cd命令的使用方法1、cd ~:回到用户家目录。注:这得看你linux查看多线程命令?
linux查看多线程命令?,系统,第一,线程,地址,数据,进程,命令,名称,软件,情况,如何查看linux服务器的cpu数量,内核数,和cpu线程数如何查看linuxlinux下载命令多线程?
linux下载命令多线程?,系统,单位,概念,数据,线程,进程,产品,地址,代码,状态,谁有linux下多线程库的源码啊,要确实可用的,确实可以免费下载的,linux命令和应用程序?
linux命令和应用程序?,软件,系统,环境,管理,基础,情况,位置,电脑,工具,中心,在linux下如何装应用程序?需要什么命令啊首先从官网下载hdf5,根据linux多线程跑命令?
linux多线程跑命令?,系统,代码,单位,地址,工具,入口,信息,管理,位置,服务,Linux多线程之同步互斥锁和读写锁:提供对临界资源的保护,当多线程试图linux命令输入方法?
linux命令输入方法?,系统,电脑,密码,管理,地址,命令,网站,工具,首开,位置,linux终端输入~怎么弄中间在电脑上打开需要的Word文件进入。进入到文Python中什么是反射?使用方法有哪
Python中什么是反射?使用方法有哪些?,信息,培训,状态,术语,检测,反射,属性,对象,字符串,方法,反射这个术语在很多语言中都存在,并且存在大量的Python3多线程爬虫讲解
Python3多线程爬虫讲解,代码,分时,系统,网络,状态,培训,做多,时间,线程,爬虫,多线程概述多线程使得程序内部可以分出多个线程来做多件事情,充Python中有哪些方法可以解压文件?
Python中有哪些方法可以解压文件?,工具,系统,工作,培训,文件,文件夹,方法,窗体,不同于,以下内容,在Python学习和日常使用中,很容易造成文件过大Python列表类型list合并有哪些方法
Python列表类型list合并有哪些方法?,培训,方法,列表,可能会,数组,切片,下文,字符串,数据类型,请看,在Python编程语言中,有各种数据类型,比如字符什么是Python的多进程和多线程?
什么是Python的多进程和多线程?,代码,工作,线程,进程,培训,技术,系统,数据,通讯,任务,学Python的朋友听说过进程和线程吗?其实,不仅是Python,学