у меня ниже код
public void addNames(){
List<String> names = new ArrayList<String>
names.parallelStream().foreach(name->add(name));
}
private void add(String name){
SQLSession session = SQLSessionFactory.getSession(config);
Connection con=Session.openConnection();
con.insert(name);
con.commit;
con.close
}
Проблема в том, что “name->add(name)”
будет выполняться для каждого имени, там я открываю и закрываю соединения для каждого имени. Если у меня есть миллионы записей, тогда это проблема.
Я не могу открыть соединение за пределами “names.parallelStream().foreach(name->add(name, connection));”
и передать его в качестве параметра, поскольку все потоки будут заблокированы на одном объекте соединения.
Итак, я хочу получить соединение для потока, как я могу сделать это, используя
“names.parallelStream().foreach(name->add(name));”
?
Я хочу сделать следующее за потоком
- Получить соединение
- Вставить
- Вставить
- Вставка —— N вставок
- Подтвердить и закрыть соединение
Если я создаю и запускаю поток, я могу сделать это. Как мы можем добиться этого для каждого потока, используя parallelStreams?
Короче говоря, я хочу, чтобы поток в параллельном потоке получал соединение для каждого потока и выполнял name->add(name)
, а после этого поток должен зафиксировать и закрыть соединение. Это возможно?