草庐IT

并发锁

全部标签

java - 并发/非阻塞控制台键盘输入

我正在用Java开发MUD。我每次都读取播放器输入,但我使用的是Scanner,它使用阻塞操作。我想要非阻塞输入。我看过nio包,它有一个Selector类,但我不确定如何将它用于System.in。我想一旦我运行服务器我肯定会需要它,但现在一切都处于离线状态。我已经尝试从Applet扩展主类并覆盖keyDown,但这只是意味着在第一个输入之后不再接受输入。当然,我不再阻止任何东西,但是没有更多的输入。keyDown我猜再也没有被调用过。也许线程即使在执行阻塞操作时也可以被中断?感谢您对此问题的任何见解。 最佳答案 你不能用系统控制

java - 具有大量并发事务的 Hibernate 二级缓存 ObjectNotFoundException

我们有一个Java应用程序,它使用MySQL、Hibernate(3.5.1-Final)和EHcache(1.2.3)作为我们的二级缓存。我们的hibernate.properties隔离级别是Read-committedisolation=2#2-Readcommittedisolationhibernate.connection.isolation=2在大量并发事务下,我们发现某些集合(数据库关联)​​在加载时会抛出ObjectNotFoundException并且似乎二级缓存正在返回该集合的旧副本。我们有许多不同类型的事务访问此集合(仅阅读),但只有几个会向其中添加/删除项目。

java - 按值对并发映射条目进行排序

有没有什么方法可以创建Map的线程安全实现,以维护其条目按值排序?我知道我可以像这样创建一个线程安全的MapConcurrentMaprankings=newConcurrentHashMap();然后我可以通过将条目传递给这样的实用方法来获取按值排序的条目:publicstatic>MapsortByValue(Mapmap){List>list=newLinkedList>(map.entrySet());Collections.sort(list,newComparator>(){@Overridepublicintcompare(Map.Entryo1,Map.Entryo2)

java - 具有约束的 Java 中的并发请求处理

假设我需要处理3种类型的请求:A、B和C,如下所示:并发处理请求。同时有最多K(不能同时处理相同类型的请求。更一般地,类型数为N,并发请求数为K您将如何使用java.util.concurrent在Java中实现它? 最佳答案 您不能同时处理K个请求,这将违反第二条规则。最大并发请求数为数字类型。在你的情况下是三个。所以制作三个队列并将它们附加到三个线程。那是唯一的方法。Executors.newSingleThreadExecutor实现了这项技术。publicstaticvoidmain(String[]args){intN=2

java - 具有独立消费者的单个 InputStream 的并发处理

我需要生成N个消费者线程,它们同时处理相同的InputStream,例如-以某种方式对其进行转换,计算校验和或数字签名等。这些消费者彼此不依赖,并且都在使用第三方库,这接受InputStream作为数据源。所以我能做的是-创建一些InputStream的实现,这将从“父”流中读取数据block解锁消费者等到每个消费者都读完整个block阅读下一段虽然看起来很简单,但当某些消费者死亡时,可能会引发各种问题,例如活锁,实现所有InputStream方法,使用屏障/锁存器控制消费者自己的fork/join等。一个friend告诉我,实现需要半个小时,这让我度过了一个晚上。我宁愿使用足够成熟的

java - 为什么并发 GC 需要 remark 阶段

并发GC需要remark阶段。remarkphase的作用是在concurrentmarkphase中标记被修改的对象。但我认为如果我们只在concurrentmarkphase标记新创建的对象,就没有必要执行remarkphase。remarkphase是因为对象被修改了。修改可以是两种类型。一个是创建新对象,另一个是修改指向另一个对象的指针。如果我们标记新创建的对象,就可以轻松解决新对象问题。而修改指向另一个对象的指针实际上不是问题。因为Deadobjectcannotrevive死对象意味着没有人可以指向该对象。他们如何复活?所以修改后的指针应该指向已经标记好的对象。这意味着不需

java - Spring Security 通过并发登录尝试锁定用户

我是安全方面的新手,遇到了一个导致用户帐户被锁定的问题,只有重新启动应用程序才能修复它。我有一个带有springsecurity(4.0.2.RELEASE)应用程序的springboot(1.3.0.BUILD-SNAPSHOT),我试图控制并发session策略,以便用户只能进行一次登录。它正确地检测到来自另一个浏览器的后续登录尝试并阻止了这种情况。但是,我注意到一些我似乎无法追踪的奇怪行为:一个用户可以在同一个浏览器中验证两个选项卡。我无法使用三个选项卡登录,但有两个可以。注销一个似乎注销两个。我看到cookie值相同,所以我猜他们正在共享一个session:tab1JSESSI

java - 迭代器如何在并发 HashMap 中实现故障安全

据我所知,CopyOnWriteArrayList中的迭代器是线程安全的,因为在迭代器时快照引用了arrayList的副本已创建,并且在此过程中,所有可变操作(添加、设置等)都是通过创建底层数组的新副本来实现的,因此它们不会影响副本由快照引用引用,与CopyOnWriteArraySet相同,但是在ConcurrentHashMap的情况下挣扎,所以请分享您的观点,迭代器在ConcurrentHaspMap的情况下是如何故障安全的 最佳答案 你的问题有点模棱两可——你在标题中提到了failsafe但在正文中提到了thread-saf

java - 并发队列 - 一般问题(描述和用法)

我在理解并发队列的概念时遇到了一些困难。我了解队列是一种FIFO,即先到先得的数据结构。现在当我们添加并发部分时,我将其解释为线程安全(如果不正确,请告诉我)事情变得有点模糊。并发性是指各种线程可以添加到队列或从队列中删除(服务项目)的方式?并发是否为该操作提供了一种有序感?我将非常感谢对并发队列功能的一般描述。类似的帖子here并不像我希望的那样一般。还有并发优先级队列这种东西吗?它的用途是什么?非常感谢有关此主题的任何简短解释或有用链接。 最佳答案 BlockingQueue提供很少开销的概念有点误导。获取锁会调用相当大的开销。

【Zblog搭建博客网站】windows环境搭建属于自己的博客并发布上线 - cpolar内网穿透

文章目录1.前言2.Z-blog网站搭建2.1XAMPP环境设置2.2Z-blog安装2.3Z-blog网页测试2.4Cpolar安装和注册3.本地网页发布3.1.Cpolar云端设置3.2Cpolar本地设置4.公网访问测试5.结语转载自远程内网穿透的文章:【Zblog建站】搭建属于自己的博客网站,并内网穿透实现公网访问1.前言想要成为一个合格的技术宅或程序员,自己搭建网站制作网页是绕不开的项目。就以笔者自己的经历来说,就被自制网页网站卡过很久。不过随着电脑技术的发展,已经出现了很多便捷快速建站的工具软件。今天,笔者就为大家展示,如何快速上手Z-blog,建立自己的个人博客网站,并通过cpo