小编Jac*_*cky的帖子

注入与红宝石中的减少相同的东西?

我看到他们在这里被记录在案.它们是一样的吗?为什么Ruby有这么多别名(比如数组的map/collect)?非常感谢.

ruby reduce alias inject

108
推荐指数
2
解决办法
3万
查看次数

如何在多线程中使用spring事务

我有一个方法如下:

ClassA.java
@Transactional
public void methodA(){        
    ExecutorService executorService = Executors.newFixedThreadPool(4);
    executorService.execute(new Runnable() {
        public void run() {
            classB.methodB();
        }
});
}
ClassB.java
@Transactional
public void methodB(){
    updateDB();
}
Run Code Online (Sandbox Code Playgroud)

方法B可以很好地工作吗?根据我的理解,methodB将附加methodA的事务,如果methodA在methodB之前退出怎么办?我想只有methodA才能被事务提交.但是因为之前提交的事务,methodB不会提交.

我可以对methodB使用@Transactional(propagation = Propagation.REQUIRES_NEW).这可以让方法B有一个新的事务.但是根据spring doc,方法A的转换将在调用methodB时暂停.我觉得这里很困惑.

任何人都可以帮我解决这个问题吗?提前致谢.

java spring multithreading transactional propagation

37
推荐指数
1
解决办法
2万
查看次数

Spring Bean用于什么原型?

默认情况下,Spring创建的Bean是单例.它们是线程安全的,因为它们是无状态的.当我们希望Spring创建有状态Bean时,我们需要使用原型范围来定义Bean.我们需要为他们处理线程安全问题.当原型bean注入时,所有无状态Bean都将被污染.所以,我只是无法想象我们可以在哪里使用原型范围.你能给出一些我们可以/需要使用原型Spring Bean的典型场景吗?另外,我们怎样才能消除其他单身豆的有状态污染?

singleton spring prototype thread-safety

9
推荐指数
1
解决办法
1万
查看次数

为什么JVM的GC喜欢不可变的目标?

我知道JVM GC喜欢短期对象的原因,因为它可以在次要GC中收集.但是为什么JVM GC喜欢不可变对象呢?

编辑:查理亨特说,GC在他的演讲中喜欢不可变的对象.

谢谢

garbage-collection jvm object immutability

9
推荐指数
1
解决办法
2585
查看次数

为什么ExecutorService没有针对Runnable任务的invokeAll

我注意到Runnable任务和Callable任务都有提交方法.为什么只有invokeAll用于可调用任务,但没有用于Runnable任务的invokeAll.谢谢

callable executorservice runnable

6
推荐指数
0
解决办法
1575
查看次数

GC是否会收集对象a和b,如果它们只相互引用?

GC是否会收集对象a和b,如果它们只相互引用?你能帮助解释一下原因,或者给一个参考文档来解释这个逻辑.非常感谢

java garbage-collection

5
推荐指数
1
解决办法
160
查看次数

我们是否需要Hashtable,因为我们有ConcurrentHashMap?

Java java.util.Hashtable具有与之相同的功能java.util.HashMap.它们的主要区别在于Hashtable线程安全和同步,而HashMap不是.从JDK5开始,我们ConcurrentHashMap可以将其用于多线程上下文.它的性能比Hashtable.那么我们Hashtable将来有什么理由可以使用吗?

java hashtable concurrenthashmap

3
推荐指数
1
解决办法
489
查看次数

如何使用事务范围的持久化上下文进行非事务性读取查询?

我读了Spring文档,它说:

@PersistenceContext注释具有可选的属性类型,默认为PersistenceContextType.TRANSACTION.此默认值是接收共享EntityManager代理所需的内容.

  1. 这是否意味着我必须让EntityManager在事务中工作?
  2. 它如何用于非事务性方法(读取查询),例如下面代码中的loadProductsByCategory?
  3. "共享"是什么意思?如何使用EntityManager与他人共享?
  4. 我是否需要将@Transactional添加到方法loadProductsByCategory以便将EntityManager绑定到线程?因为ProductDaoImpl类是单例并且在多线程中工作,但是entityManager不是线程安全的.

    @Service
    public class ProductDaoImpl implements ProductDao {
        @PersistenceContext
        private EntityManager em;
        public Collection loadProductsByCategory(String category) {
            Query query = em.createQuery("from Product as p where p.category = :category");
            query.setParameter("category", category);
            return query.getResultList();
        }
        @Transactional
        public void loadProductsByCategory(Product product) {
            em.persist(product);
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

spring scope jpa transactional

3
推荐指数
1
解决办法
3233
查看次数