小编Ron*_*Ron的帖子

在Java中是永久生成的空间垃圾收集?

我已经读过Perm gen(或Permanent Generation)空间不是垃圾收集的.但是,在CMS集合中,我可以在GC日志中看到一些类正在卸载.那么在完全收集或CMS收集期间收集的perm gen垃圾是什么?

java garbage-collection

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

这个java应用程序如何在不扩展线程或实现runnable的情况下运行多个线程?

我正在学习Java,并且能够使用runnable对我现有的应用程序进行一些多线程处理.我现在正在看disruptor(在线程之间共享变量),但我无法弄清楚作者是如何实际产生线程的.

我看到他正在使用Executor,我用它在我的程序中提交runnable类,但在这个例子中没有提交(或runnable).我只是从Oracle教程中学到了我所知道的,他们提到只有两种方法是扩展线程或实现runnable(我在这里看不到,但他确实将执行器提交给disruptor,这可能是他的线程化方式?).我错过了什么,或者这个人是以不同的方式做的吗?我的最终目标是理解这段代码(完美地运行),这样我就可以将它应用到我现有的(使用runnable)代码中.

这是有问题的代码:

App.java

import com.lmax.disruptor.*;
import com.lmax.disruptor.dsl.*;

import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;

public class App {

    private final static int RING_SIZE = 1024 * 8;

    private static long handleCount = 0;

    private final static long ITERATIONS = 1000L * 1000L * 300L;
    private final static int NUM_EVENT_PROCESSORS = 8;

    private final static EventHandler<ValueEvent> handler =
        new EventHandler<ValueEvent>() {
        public void onEvent(final ValueEvent event,
                                final long sequence,
                                final boolean endOfBatch) throws Exception {
        handleCount++;
    }
    };

    public …
Run Code Online (Sandbox Code Playgroud)

java multithreading disruptor-pattern

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