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

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

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

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

Так это к тебе вопрос, а не к форуму. Ты же как-то хочешь убивать одни потоки и не убивать другие.
При этом ещё один вопрос, который я тут уже не первый раз задаю, почему убивать нужно именно "потоки" а не "задачи"?
...
Рейтинг: 0 / 0
04.01.2016, 16:53
    #39142030
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранилище потоков
Blazkowiczпочему убивать нужно именно "потоки" а не "задачи"?
в данном случае поток и явл. выполняющейся задачей, имхо тут нет противоречия
...
Рейтинг: 0 / 0
04.01.2016, 16:58
    #39142032
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранилище потоков
rema174в данном случае поток и явл. выполняющейся задачей, имхо тут нет противоречия
А кто говорил про противоречие? Просто жизненый цикл потока и задачи может оказаться разным. И если есть необходимость прерывать задачу, то может её и стоит прерывать, а не поток?
...
Рейтинг: 0 / 0
04.01.2016, 17:47
    #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
04.01.2016, 18:05
    #39142060
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранилище потоков
хотя, если все таки запускать поток в конструкторе, а ссылку делать как obj, то прокатывает
но если ссылку очистить раньше чем завершится поток, то может возникнуть мемори лик, если в потоке после этого что-то пойдет не так
...
Рейтинг: 0 / 0
04.01.2016, 18:13
    #39142065
breath
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранилище потоков
в мапе лучше хранить не Thread, а Future и делать при необходимости future.cancel(true);
имхо
...
Рейтинг: 0 / 0
04.01.2016, 18:15
    #39142067
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранилище потоков
breathв мапе лучше хранить не Thread, а Future и делать при необходимости future.cancel(true);
имхо
а пример можно как использовать Thread с Future?
...
Рейтинг: 0 / 0
04.01.2016, 19:01
    #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
04.01.2016, 19:19
    #39142093
breath
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хранилище потоков
опа ошибочка вышла
executor.submit(Callable..);
но можно вытащить и Future из executor`ов(например ScheduledFuture) если юзается Runnable
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / хранилище потоков / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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