В чём заключается различие методов getActiveCount()
и getTaskCount()
класса ThreadPoolExecutor
? Правильно, я понимаю, что getActiveCount()
- это приблизительное количество потоков, которые выполняют задания, а getTaskCount()
- приблизительное общее количество задач, которые когда-либо были запланированы для выполнения. Т.е., правильно ли я понимаю, что значение, возвращаемое вторым методом, включает и выполняющиеся в данный момент задания, и уже выполненные и завершённые задания?
А что мешает проверить?
import java.util.Random;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.logging.Logger;
public class ThreadPoolExecutorTest {
private static final Logger LOG = Logger.getLogger(ThreadPoolExecutorTest.class.getName());
public static void main(String[] args) {
BlockingQueue<Runnable> blockingQueue = new ArrayBlockingQueue(100);
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(
10, 20, 1000, TimeUnit.SECONDS, blockingQueue
);
for (int i = 0; i < 100; i++) {
threadPoolExecutor.execute(new TestRunnable());
System.out.println("ActiveCount:" + threadPoolExecutor.getActiveCount());
System.out.println("TaskCount: " + threadPoolExecutor.getTaskCount());
}
}
}
class TestRunnable implements Runnable {
@Override
public void run() {
try {
Thread.sleep(new Random().nextInt(10000) + 2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
По выводу видно:
ActiveCount:1
TaskCount: 1
ActiveCount:2
TaskCount: 2
ActiveCount:3
TaskCount: 3
ActiveCount:4
TaskCount: 4
ActiveCount:5
TaskCount: 5
ActiveCount:6
TaskCount: 6
ActiveCount:7
TaskCount: 7
ActiveCount:8
TaskCount: 8
ActiveCount:9
TaskCount: 9
ActiveCount:10
TaskCount: 10
ActiveCount:10
TaskCount: 11
ActiveCount:10
TaskCount: 12
ActiveCount:10
TaskCount: 13
ActiveCount:10
TaskCount: 14
ActiveCount:10
TaskCount: 15
ActiveCount:10
TaskCount: 16
ActiveCount:10
TaskCount: 17
ActiveCount:10
TaskCount: 18
ActiveCount:10
TaskCount: 19
ActiveCount:10
TaskCount: 20
ActiveCount:10
TaskCount: 21
ActiveCount:10
TaskCount: 22
ActiveCount:10
TaskCount: 23
ActiveCount:10
TaskCount: 24
ActiveCount:10
TaskCount: 25
ActiveCount:10
TaskCount: 26
ActiveCount:10
TaskCount: 27
ActiveCount:10
TaskCount: 28
ActiveCount:10
TaskCount: 29
ActiveCount:10
TaskCount: 30
ActiveCount:10
TaskCount: 31
ActiveCount:10
TaskCount: 32
ActiveCount:10
TaskCount: 33
ActiveCount:10
TaskCount: 34
ActiveCount:10
TaskCount: 35
ActiveCount:10
TaskCount: 36
ActiveCount:10
TaskCount: 37
ActiveCount:10
TaskCount: 38
ActiveCount:10
TaskCount: 39
ActiveCount:10
TaskCount: 40
ActiveCount:10
TaskCount: 41
ActiveCount:10
TaskCount: 42
ActiveCount:10
TaskCount: 43
ActiveCount:10
TaskCount: 44
ActiveCount:10
TaskCount: 45
ActiveCount:10
TaskCount: 46
ActiveCount:10
TaskCount: 47
ActiveCount:10
TaskCount: 48
ActiveCount:10
TaskCount: 49
ActiveCount:10
TaskCount: 50
ActiveCount:10
TaskCount: 51
ActiveCount:10
TaskCount: 52
ActiveCount:10
TaskCount: 53
ActiveCount:10
TaskCount: 54
ActiveCount:10
TaskCount: 55
ActiveCount:10
TaskCount: 56
ActiveCount:10
TaskCount: 57
ActiveCount:10
TaskCount: 58
ActiveCount:10
TaskCount: 59
ActiveCount:10
TaskCount: 60
ActiveCount:10
TaskCount: 61
ActiveCount:10
TaskCount: 62
ActiveCount:10
TaskCount: 63
ActiveCount:10
TaskCount: 64
ActiveCount:10
TaskCount: 65
ActiveCount:10
TaskCount: 66
ActiveCount:10
TaskCount: 67
ActiveCount:10
TaskCount: 68
ActiveCount:10
TaskCount: 69
ActiveCount:10
TaskCount: 70
ActiveCount:10
TaskCount: 71
ActiveCount:10
TaskCount: 72
ActiveCount:10
TaskCount: 73
ActiveCount:10
TaskCount: 74
ActiveCount:10
TaskCount: 75
ActiveCount:10
TaskCount: 76
ActiveCount:10
TaskCount: 77
ActiveCount:10
TaskCount: 78
ActiveCount:10
TaskCount: 79
ActiveCount:10
TaskCount: 80
ActiveCount:10
TaskCount: 81
ActiveCount:10
TaskCount: 82
ActiveCount:10
TaskCount: 83
ActiveCount:10
TaskCount: 84
ActiveCount:10
TaskCount: 85
ActiveCount:10
TaskCount: 86
ActiveCount:10
TaskCount: 87
ActiveCount:10
TaskCount: 88
ActiveCount:10
TaskCount: 89
ActiveCount:10
TaskCount: 90
ActiveCount:10
TaskCount: 91
ActiveCount:10
TaskCount: 92
ActiveCount:10
TaskCount: 93
ActiveCount:10
TaskCount: 94
ActiveCount:10
TaskCount: 95
ActiveCount:10
TaskCount: 96
ActiveCount:10
TaskCount: 97
ActiveCount:10
TaskCount: 98
ActiveCount:10
TaskCount: 99
ActiveCount:10
TaskCount: 100
что getActiveCount - это количество запущенное сейчас, а getTaskCount - запущенные когда либо.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Как эффективней/целесообразней в Java собирать строку из частей? Через Stringformat()
Скачал Android Studio, пытаюсь сбилдить пример по умолчанию, получаю ошибку:
Насколько я понимаю, принципы создания новых потоков в ThreadPoolExecutor следующие: