小编gre*_*egw的帖子

如何确定运行Java线程的核心?

我想实现一个CoreLocal映射,它就像ThreadLocal一样,只返回一个特定于当前线程运行的核心的值.

这样做的原因是我想编写将从队列中获取作业的代码,但我想优先考虑那些将其关联数据放在与从队列中挑选作业的线程相同的L1缓存的作业.因此,我想为整个程序创建一个队列,而不是每个核心都有一个队列,只有当队列为空时,工作线程才会查看其他核心的队列.

java performance multithreading core

12
推荐指数
1
解决办法
1245
查看次数

如何获得git子树差异?

我有一个已安装另一个存储库的存储库

git subtree add -P some/path  otherremote otherbranch
Run Code Online (Sandbox Code Playgroud)

开发已经发生了一些局部变化,但也进行了几轮合并:

git fetch otherremote
git subtree merge -P some/path otherremote/otherbranch
git commit
Run Code Online (Sandbox Code Playgroud)

现在我想在otherremote/otherbranch的HEAD和某些/ path的树之间获得差异.我怎样才能做到这一点?

git git-diff git-subtree

11
推荐指数
1
解决办法
3630
查看次数

Servlet中使用java 9 Flow的反应流用例?

我正在寻找在servlet容器(或只是HTTP服务器)中使用反应流的用例.

码头项目已开始被问:"是码头反应" 我们已经注意到将反应流添加到java 9 的提议.

所以我们已经开始使用反应流API进行异步servlet IO的一些实验,这很有趣.....但没有任何关注,因为我们缺乏真正的用例来关注哪些问题最重要.

那么,任何人都有任何可以分享/解释的好用例,以便我们可以指导我们的码头实验来满足他们的需求.我想象的那种事情是让一个基于RS的数据库发布者在HTTP响应或websocket连接上一直发送对象,使用Flow.Processors进行转换.

servlets jetty reactive-programming reactive-streams java-9

11
推荐指数
1
解决办法
880
查看次数

使用LongAdder计算统计计数器的最大值?

我们使用AtomicLongs收集一些统计信息。一些用户看到了关于这些的争执,并建议改用LongAdder。但是,正如我们目前使用Atomic所做的那样,我认为无法计算最大值:

AtomicLong _current, _total, _max;
...

void add(long delta)
{
  long current = _current.addAndGet(delta);
  if (delta>0)
  {
    _total.addAndGet(delta);
    long max = _max.get();
    while (current > max)
    {
      if (_max.compareAndSet(max, current))
        break;
      max = _max.get();
    }
 }
Run Code Online (Sandbox Code Playgroud)

因此,我认为我们可以_total很容易地用替换掉LongAdder,但是因为这样做_current.addAndGet(delta)对a LongAdder来说效果不好,也不能对_max值进行cas操作。

是否有任何好的算法可以基于LongAdder或类似的可伸缩无锁构造收集此类统计信息?

实际上,尽管我要询问,但我们的统计信息通常会更新6至10个AtomicLongs。如果无论如何我们都在争论,那么仅仅抓住一个锁并更新6到10个正常的长仓可能会更好吗?

java statistics concurrency java.util.concurrent java-8

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