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.
This commit is contained in:
nik
2017-07-13 18:04:49 +03:00
parent d3991c1344
commit b4968983c7
3 changed files with 6 additions and 5 deletions
@@ -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) {
@@ -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)
@@ -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) {