|
|
|
Параллелизм Java
|
|||
|---|---|---|---|
|
#18+
Ну ладно, спорить не буду, возможно не дорос )) Как с CompletableFuture попробую отпишусь. спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2017, 18:17 |
|
||
|
Параллелизм Java
|
|||
|---|---|---|---|
|
#18+
AndronovMV, Да возьмине Вы наконец код со SwingWorker, который Вам Blazkowicz предложил, разберитесь с ним и с тем, почему его для swing приложений разработали и используйте. Не выдумывайте трехколесный велосипед с квадратными колесами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2017, 14:57 |
|
||
|
Параллелизм Java
|
|||
|---|---|---|---|
|
#18+
Valery Shiskin, Concurrent.* счас более хайп). Так говорят? Мне у него второй пример больше нравится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2017, 16:56 |
|
||
|
Параллелизм Java
|
|||
|---|---|---|---|
|
#18+
AndronovMVПривет! Чувствую как мое приложение на Swing начинает тормозить... ... Есть метод , в котором происходит те самые обращения и загрузка из БД. ... После того как обращения и загрузка всех таблиц завершена, возврат метода . Ну и кто же запускает этот метод, в котором происходят обращения к БД? Неужели какая-то реакция на нажатие кнопки, вроде actionPerformed, работающая на EDT? Ну тогда понятно, что ваше приложение тормозит. И после распараллеливания обращений к БД оно будет продолжать тормозить, хотя и меньше. И тормозит тот самый метод, который ждет загрузки всех таблиц, прежде чем сделать возврат. Такие вещи делаются наоборот: после всех обращений к БД происходит вызов метода, а не возврат. Причем вызов происходит на EDT с помощью Код: java 1. Этот вызов можно сделать разными способами: - вручную, как я только что написал - с помощью SwingWorker - c помощью Код: java 1. , где Код: java 1. - с помощью простых акторов, как в этом примере (да, это я написал). Здесь акторы - это как CompletableFuture многоразового использования. Как и CompletableFuture, могут работать на разных Executor'ах. Вам в вашей задаче нужно 2 Executor'а: swingExecutor и dbExecutor, последний будет содержать некоторое фиксированное число потоков исполнения. Оптимальное число этих потоков надо будет подобрать исходя из скорости загрузки данных в БД. Я думаю, это число будет в диапазоне от 5 до 20. Число задач, исполняемое на этих Executor'ах, определяется логикой вашего приложения. Это и есть главное преимущество использования пулов потоков перед непосредственным использованием потоков исполнения (в том числе перед использованием SwingWorker) - что число задач может быть очень большим, а число потоков малым и может меняться, не затрагивая логику приложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2017, 23:27 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39546234&tid=2122492]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
136ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 228ms |
| total: | 458ms |

| 0 / 0 |
