У меня есть основной поток, в котором я определил объект HashMap. Теперь в основном потоке я создаю N потоков. теперь каждый поток добавляет свой результат в объект HashMap основного потока и завершается. Я попытался передать объект HashMap в конструкторе, но когда я делаю это, каждый поток создает локальную копию объекта HashMap и редактирует его. Это изменение не сохраняется в объекте HashMap основного потока. что я делаю?Редактировать тему main thread by java
в моем главном классе
ThreadParallel threads[] = new ThreadParallel[N];
HashMap<Integer, String> map = new HashMap<Integer, String>();
for(int i=0;i<N;i++)
{
threads[i] = new ThreadParallel(map);
}
теперь в классе ThreadParallel
public class ThreadParallel implements Runnable{
HashMap<Integer, String> map;
Thread t;
public ThreadParallel(HashMap<Integer, String> map) {
this.map = map;
t = new Thread(this);
t.start();
}
@Override
public void run() {
// adding data
}
}
Использование 'this' в конструкторе может быть опасным, так как объект не полностью сконструирован в этой точке. –
Вы должны разместить больше кода, потому что из представленного вами кода неясно, как создаются несколько карт. –