При старте miltithreading программы из IDE (IDEA) программа корректно работает, завершается, все потоки отрабатывают, все ресурсы закрыты. Но после сборки посредством gradle все тоже самое, только выполнение доходит до конца метода main и останавливается. Процесс не завершается, пока его принудительно руками не прибьешь. Но если в конец main добавить
System.exit(0);
То и после сборки gradle процесс завершается корректно. Почему так происходит? И можно ли что-то подкрутить, что бы избавиться от System.exit (по мне так это слишком коряво)?
Добавлено: Gragle
group 'cherkasov.com'
apply plugin: "java"
apply plugin: "application"
mainClassName = "cherkasov.com.Manager"
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.11'
compile group: 'commons-cli', name: 'commons-cli', version: '1.4'
testCompile group: 'org.mockito', name: 'mockito-all', version: '1.10.19'
}
jar {
baseName = 'utility'
manifest.attributes("Main-Class": mainClassName,
"Class-Path": configurations.runtime.files.collect { "$it.name" }.join(' '))
}
task wrapper(type: Wrapper) {
gradleVersion = '1.12'
}
Main
public class Manager {
private final String[] args;
private long workingTime = 0L;
public static void main(String[] args) {
Manager manager = new Manager(args);
manager.execute();
LOG.log(Level.WARNING, "End programm");
System.exit(0);
}
Лог выводит и далее висит (без System.exit). Потоки все создаются через
ExecutorService service = Executors.newFixedThreadPool(threadCounter);
Фоновых потоков нет.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости