小编Mat*_*ord的帖子

通过ReentrantLock访问的字段是否需要volatile关键字?

我的问题是指使用ReentrantLock是否保证字段的可见性与synchronized关键字提供的方面相同.

例如,在下面的类A中,当使用synchronized关键字时,字段sharedData不需要声明为volatile.

class A 
{
  private double sharedData;

  public synchronized void method() 
  {
    double temp = sharedData;
    temp *= 2.5;
    sharedData = temp + 1;
  } 
}
Run Code Online (Sandbox Code Playgroud)

但是对于使用ReentrantLock的下一个示例,是否必须在该字段上使用volatile关键字?

class B 
{
  private final ReentrantLock lock = new ReentrantLock();
  private volatile double sharedData;

  public void method() 
  {
    lock.lock();
    try
    {
      double temp = sharedData;
      temp *= 2.5;
      sharedData = temp + 1;
    }
    finally
    {
      lock.unlock();
    }
  } 
}
Run Code Online (Sandbox Code Playgroud)

我知道无论如何使用volatile关键字只会造成极小的性能损失,但我仍然希望正确编码.

java concurrency locking volatile reentrancy

28
推荐指数
1
解决办法
2518
查看次数

如何找到序列化Java对象的serialVersionUID?

我有几个可序列化的类,编译时没有指定serialVersionUID.我现在需要向这些类添加一些数据成员,但希望保留一些已经序列化的对象.

有没有找到这些序列化对象的serialVersionUID,以便我可以在源代码中指定相同的ID?

java serialization

13
推荐指数
2
解决办法
9326
查看次数

Lambda限制低于并发限制

我们使用Lambda为通过新闻媒体网站访问的API(通过API网关)供电,接收波动但高负载的流量.我们开始体验限制,因此我们将并发限制提高到2000.但是,我们仍然每天多次经历限制.

奇怪的是,在CloudWatch指标中,当我们受到限制时,并发请求达到600或更低.请参阅此CloudWatch图表作为示例:

CloudWatch指标中的Lambda限制

有谁之前经历过这个吗?为什么你认为这种情况发生了?我们对于它可以做些什么呢?

更多信息

  • 此图表涵盖了整个地区的所有Lambdas.
  • 发生限制时,它会在所有Lambda实例中发生.
  • 我们主要通过API网关触发Lambdas,但有一些是通过SNS触发的(相当高的数据速率).
  • 我们在所有API前面都有CloudFront,其中一些我们有5秒的缓存时间(对于超级频繁请求的API - 节省我们$$$)

此外,这里的图像还显示了同一时间段内的总调用次数和平均持续时间.很难知道是什么因果关系(由于节流导致持续时间上升,反之亦然,因为一些lambdas会调用其他lambda).请查看相应的轴,因为刻度差异很大.

在此输入图像描述

throttling amazon-web-services aws-lambda aws-api-gateway

9
推荐指数
2
解决办法
1593
查看次数

Java中的GC是否通过并行运行100%而不引入延迟(停止世界)?

只是好奇.我听说过关于新G1GC处理延迟问题的一些事情.我不能/不想使用RTSJ.

提前致谢

java optimization garbage-collection g1gc

7
推荐指数
3
解决办法
897
查看次数