Java中似乎有很多不同的实现和方法来生成线程安全的集合。 一些例子包括 1) CopyOnWriteArraySet 2) Collections.synchronizedSet(Set集) 3) ConcurrentSkipListSet 4) Collections.newSetFromMap(new ConcurrentHashMap()) 5)以类似于(4)的方式生成的其他集合 这些示例来自并发模式:Java 6中的并发集实现 有人可以简单地解释一下这些例子和其他例子的差异,优点和缺点吗? 我无法理解并保持Java Std Docs中的所有内容。
在Spring Web应用程序中,我有几个DAO和服务层bean。 一个服务层bean注释了@Async / @Scheduled方法。 这些方法依赖于其他(自动布线)的bean。 我已经在XML中configuration了两个线程池: <bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"> <property name="corePoolSize" value="2" /> <property name="maxPoolSize" value="5" /> <property name="queueCapacity" value="5" /> <property name="waitForTasksToCompleteOnShutdown" value="true" /> <property name="rejectedExecutionHandler"> <bean class="java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy"/> </property> </bean> <bean id="taskScheduler" class="org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler"> <property name="poolSize" value="10" /> <property name="waitForTasksToCompleteOnShutdown" value="true" /> <property name="rejectedExecutionHandler"> <bean class="java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy"/> </property> </bean> <task:annotation-driven executor="taskExecutor" scheduler="taskScheduler"/> 一切都按预期工作。 我的问题是,我不能得到任务池的干净closures工作。 这些任务在数据库和文件系统上运行。 […]
我正在阅读Java实践书籍并发 。 在第15章中,他们正在讨论非阻塞algorithm和比较与交换 (CAS)方法。 据说CAS比locking方法好得多。 我想询问那些已经同时使用这两个概念的人,并且希望听到你更喜欢哪一个概念? 它真的太快了吗? 对我来说,锁的使用更清晰,更容易理解,甚至更好维护(如果我错了,请纠正我) 。 我们是否真的应该专注于创build与CAS相关的并发代码而不是锁,以获得更好的性能提升,还是可持续性更重要? 我知道有什么时候使用什么可能没有严格的规定。 但是我想听听一些关于CAS新概念的意见和经验。
我正在写一个Java程序,它使用了很多的CPU,因为它的性质。 但是,它可以并行运行,而且我的程序是multithreading的。 当我运行它,似乎只使用一个CPU,直到它需要更多,然后使用另一个CPU – 有什么我可以在Java中做强迫不同的线程运行在不同的核心/ CPU?
有没有使用的好处 java.util.concurrent.CountdownLatch 代替 java.util.concurrent.Semaphore ? 据我所知,以下片段几乎是等价的: 1.信号量 final Semaphore sem = new Semaphore(0); for (int i = 0; i < num_threads; ++ i) { Thread t = new Thread() { public void run() { try { doStuff(); } finally { sem.release(); } } }; t.start(); } sem.acquire(num_threads); 2:CountDownLatch final CountDownLatch latch = new CountDownLatch(num_threads); for […]
与JNI相比,JNA似乎更容易用来调用本地代码。 你会在哪些情况下使用JNI而不是JNA?
在我之前的问题, DAO和服务层(JPA / Hibernate + Spring)之后 ,我决定在使用JPA / Hibernate,Spring和Wicket的应用程序中为我的数据层(至less在开头)使用一个DAO。 提出了使用通用的CRUD方法,但我不太确定如何使用JPA来实现这一点。 请给我一个例子,或者分享一个关于这个的链接?
我想在Sublime Text 2中编译和运行Java代码。不要只是告诉我在命令提示符下手动执行它。 谁能告诉我怎么样? 顺便说一句,我在Windows 7上…
我最近在采访中得到了这个问题。 我回答说,如果交错发生,就会发生死锁,但是采访者坚持认为,一个程序总是会陷入僵局,而不pipe交错如何。 我们可以写这样的程序吗? 你能指点我一些这样的例子程序?
我对Maven的口头禅相对来说比较陌生,但是我正在尝试用Maven构build一个命令行可运行的jar。 我已经设置了我的依赖关系,但是当我运行mvn install并尝试运行jar时,发生了两件事情。 首先,找不到主类,这是可以纠正的。 当我纠正这个,我得到运行错误,说明类无法find。 Maven不会将我的依赖库封装在jar中,所以我无法将jar作为独立的应用程序运行。 我该如何纠正?