2

我无法在 Aeron 的 LowLatencyMediaDriver 示例中设置新的 Threadfactory()。有关 VisualVM 中线程名称的代码和快照,请参见下面的代码。

public class LowLatencyMediaDriver {
    public static void main(final String[] args) {
        loadPropertiesFiles(args);

        ThreadFactory conductorThreadFactory = new ThreadFactoryBuilder().setNameFormat(LowLatencyMediaDriver.class.getName()+"-Conductor-%d").setDaemon(true).build();
        ThreadFactory receiverThreadFactory = new ThreadFactoryBuilder().setNameFormat(LowLatencyMediaDriver.class.getName()+"-Receiver-%d").setDaemon(true).build();
        ThreadFactory senderThreadFactory = new ThreadFactoryBuilder().setNameFormat(LowLatencyMediaDriver.class.getName()+"-Sender-%d").setDaemon(true).build();

        final MediaDriver.Context ctx = new MediaDriver.Context()
            .termBufferSparseFile(false)
            .threadingMode(ThreadingMode.DEDICATED)
            .conductorThreadFactory(conductorThreadFactory)
            .receiverThreadFactory(receiverThreadFactory)
            .senderThreadFactory(senderThreadFactory)
            .conductorIdleStrategy(new BusySpinIdleStrategy())
            .receiverIdleStrategy(new BusySpinIdleStrategy())
            .senderIdleStrategy(new BusySpinIdleStrategy());

        try (MediaDriver ignored = MediaDriver.launch(ctx)) {
            new ShutdownSignalBarrier().await();
            System.out.println("Shutdown Driver...");
        }
    }
}

在此处输入图像描述

4

1 回答 1

1

AgentRunner 类自动重命名线程并且不保留通过 ThreadFactory() 给出的名称。

https://github.com/real-logic/agrona/blob/master/agrona/src/main/java/org/agrona/concurrent/AgentRunner.java#L94

于 2018-03-09T20:29:20.893 回答