powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / хранилище потоков
13 сообщений из 13, страница 1 из 1
хранилище потоков
    #39142010
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужно реализовать хранилище потоков с возможность прибивать любой из них по какому-то идентификатору. Т.е. в хранилище помещаются все запускающиеся потоки. Т.о. те которые завершились - просто будут содержать какой-то идентификатор, а те которые еще активные - чтобы возможно было их прибить. Как это лучше сделать?
...
Рейтинг: 0 / 0
хранилище потоков
    #39142013
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WeakHashMap?
...
Рейтинг: 0 / 0
хранилище потоков
    #39142018
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

первый раз про такую слышу
...
Рейтинг: 0 / 0
хранилище потоков
    #39142024
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
The WeakHashMap will automatically remove entries whenever all references to the key are removed.
Т.е. ключ это ссылка на поток, а значение это сам поток.

Что будет явл. ключом?
Если ключи будут храниться в другой мапе, то все ссылаемые потоки будут еще не garbage collected даже если они завершились?

Т.о. если сделать в потоке метод, который можно дернуть, чтобы поток завершился, то допустим дернув этот метод - тот ссылаемый потом завршится, но так как ссылка на этот потом еще есть гдето(в другой мапе) то поток еще не будет доступен для gc, хотя это не так важно(?) главное что он запвершился, а если прибить и ссылку в другой мапе, то тогда тот (завершенный) поток станет доступен и для GC?
...
Рейтинг: 0 / 0
хранилище потоков
    #39142029
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174Что будет явл. ключом?

Так это к тебе вопрос, а не к форуму. Ты же как-то хочешь убивать одни потоки и не убивать другие.
При этом ещё один вопрос, который я тут уже не первый раз задаю, почему убивать нужно именно "потоки" а не "задачи"?
...
Рейтинг: 0 / 0
хранилище потоков
    #39142030
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowiczпочему убивать нужно именно "потоки" а не "задачи"?
в данном случае поток и явл. выполняющейся задачей, имхо тут нет противоречия
...
Рейтинг: 0 / 0
хранилище потоков
    #39142032
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174в данном случае поток и явл. выполняющейся задачей, имхо тут нет противоречия
А кто говорил про противоречие? Просто жизненый цикл потока и задачи может оказаться разным. И если есть необходимость прерывать задачу, то может её и стоит прерывать, а не поток?
...
Рейтинг: 0 / 0
хранилище потоков
    #39142054
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

че то не выходит с потоком

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Map<Object, Object> map = new WeakHashMap<Object, Object>();
		Object obj = new Object(); // создаём объект 
		map.put(obj, "object"); // кладём его в мапу 
		System.out.println(map.size()); // в мапе один элемент 
		obj = null; // чистим ссылку 
		System.gc(); // играемся со сборщиком мусора 
		System.runFinalization(); 
		System.out.println(map.size()); // мапа должна стать пустой
		
		Thread t = new Thread(new Yui());
		Thread tempThread = t;
		map.put(tempThread, t);
		t.start();
		t.join();		
		tempThread = null;
		System.gc();
		System.runFinalization();		
		System.out.println(map.size());


автор1
0
Yui is runnign
Yui is runnign
Yui is runnign
1
...
Рейтинг: 0 / 0
хранилище потоков
    #39142060
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
хотя, если все таки запускать поток в конструкторе, а ссылку делать как obj, то прокатывает
но если ссылку очистить раньше чем завершится поток, то может возникнуть мемори лик, если в потоке после этого что-то пойдет не так
...
Рейтинг: 0 / 0
хранилище потоков
    #39142065
breath
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в мапе лучше хранить не Thread, а Future и делать при необходимости future.cancel(true);
имхо
...
Рейтинг: 0 / 0
хранилище потоков
    #39142067
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
breathв мапе лучше хранить не Thread, а Future и делать при необходимости future.cancel(true);
имхо
а пример можно как использовать Thread с Future?
...
Рейтинг: 0 / 0
хранилище потоков
    #39142089
breath
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
непонятно зачем трогать тред

Код: java
1.
2.
3.
public class MyClass implements Runnable {
..
Future f = executor.submit(myClass);


где executor например ThreadPoolExecutor

внутри executor`ов юзается ThreadFactory который создает треды, можно от него расшириться
Код: java
1.
2.
3.
4.
class MyThreadFactory implements ThreadFactory {
    @Override
    public Thread newThread(Runnable r) {
//тут создание треда




можно от ThreadPoolExecutor тоже расшириться
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
public class MyExecutor extends ThreadPoolExecutor {
  @Override
  protected void beforeExecute(Thread t, Runnable r) { //можно положить тут в мапу
    super.beforeExecute(t, r);
  }

  @Override
  protected void afterExecute(Runnable r, Throwable t) {
    try {
      long endTime = System.nanoTime();
    } finally {
      super.afterExecute(r, t);
      purge();
    }
  }
...
Рейтинг: 0 / 0
хранилище потоков
    #39142093
breath
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
опа ошибочка вышла
executor.submit(Callable..);
но можно вытащить и Future из executor`ов(например ScheduledFuture) если юзается Runnable
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / хранилище потоков
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]