From b4968983c7db90c3cb1212b8521e71d2dff2cc19 Mon Sep 17 00:00:00 2001 From: nik Date: Thu, 13 Jul 2017 18:04:22 +0300 Subject: [PATCH] jps: use daemon thread for background tasks This way we won't need to call System.exit() to finish every script which uses JPS model. --- .../src/org/jetbrains/jps/cmdline/BuildMain.java | 3 ++- .../src/org/jetbrains/jps/javac/ExternalJavacManager.java | 6 +++--- .../jetbrains/jps/service/impl/SharedThreadPoolImpl.java | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/jps/jps-builders/src/org/jetbrains/jps/cmdline/BuildMain.java b/jps/jps-builders/src/org/jetbrains/jps/cmdline/BuildMain.java index 9e4ff51d082e..e48b420d9838 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/cmdline/BuildMain.java +++ b/jps/jps-builders/src/org/jetbrains/jps/cmdline/BuildMain.java @@ -18,6 +18,7 @@ package org.jetbrains.jps.cmdline; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.io.FileSystemUtil; import com.intellij.openapi.util.io.FileUtil; +import com.intellij.util.ConcurrencyUtil; import io.netty.bootstrap.Bootstrap; import io.netty.channel.*; import io.netty.channel.nio.NioEventLoopGroup; @@ -85,7 +86,7 @@ public class BuildMain { // IDEA-123132, let's try again for (int attempt = 0; attempt < 3; attempt++) { try { - ourEventLoopGroup = new NioEventLoopGroup(1, SharedThreadPool.getInstance()); + ourEventLoopGroup = new NioEventLoopGroup(1, ConcurrencyUtil.newNamedThreadFactory("JPS event loop")); break; } catch (IllegalStateException e) { diff --git a/jps/jps-builders/src/org/jetbrains/jps/javac/ExternalJavacManager.java b/jps/jps-builders/src/org/jetbrains/jps/javac/ExternalJavacManager.java index 60bdf91a9486..21b02e07c7a3 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/javac/ExternalJavacManager.java +++ b/jps/jps-builders/src/org/jetbrains/jps/javac/ExternalJavacManager.java @@ -24,6 +24,7 @@ import com.intellij.openapi.util.Key; import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.util.ConcurrencyUtil; import com.intellij.util.concurrency.Semaphore; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.*; @@ -44,9 +45,8 @@ import org.jetbrains.jps.api.CanceledStatus; import org.jetbrains.jps.builders.java.JavaCompilingTool; import org.jetbrains.jps.cmdline.ClasspathBootstrap; import org.jetbrains.jps.incremental.GlobalContextKey; -import org.jetbrains.jps.service.SharedThreadPool; -import javax.tools.Diagnostic; +import javax.tools.*; import java.io.File; import java.net.InetAddress; import java.net.UnknownHostException; @@ -81,7 +81,7 @@ public class ExternalJavacManager { public void start(int listenPort) { final ChannelHandler compilationRequestsHandler = new CompilationRequestsHandler(); final ServerBootstrap bootstrap = new ServerBootstrap() - .group(new NioEventLoopGroup(1, SharedThreadPool.getInstance())) + .group(new NioEventLoopGroup(1, ConcurrencyUtil.newNamedThreadFactory("Javac server event loop"))) .channel(NioServerSocketChannel.class) .childOption(ChannelOption.TCP_NODELAY, true) .childOption(ChannelOption.SO_KEEPALIVE, true) diff --git a/jps/model-impl/src/org/jetbrains/jps/service/impl/SharedThreadPoolImpl.java b/jps/model-impl/src/org/jetbrains/jps/service/impl/SharedThreadPoolImpl.java index b2c4b8dfe038..c0a8866168af 100644 --- a/jps/model-impl/src/org/jetbrains/jps/service/impl/SharedThreadPoolImpl.java +++ b/jps/model-impl/src/org/jetbrains/jps/service/impl/SharedThreadPoolImpl.java @@ -27,7 +27,7 @@ import java.util.concurrent.Future; * @author nik */ public class SharedThreadPoolImpl extends SharedThreadPool { - private final ExecutorService myService = Executors.newCachedThreadPool(ConcurrencyUtil.newNamedThreadFactory("JPS thread pool")); + private final ExecutorService myService = Executors.newCachedThreadPool(ConcurrencyUtil.newNamedThreadFactory("JPS thread pool", true, Thread.NORM_PRIORITY)); @Override public void execute(@NotNull Runnable command) {