powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Потоки и методы в них
23 сообщений из 23, страница 1 из 1
Потоки и методы в них
    #37632769
LedFly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, такой вопрос: есть 2 потока, основной и Threader. Как из основного потока обратиться к методу Threader'а doSmth() так, чтобы он выполнился в потоке Threader, а не в основном?
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
public class Threader implements Runnable {

    private Thread t;

    public Threader() {
        t = new Thread(this);
        t.start();
    }

    public void doSmth() {        
		// Нужные действия
    }

    @Override
    public void run() {
        while (true){            
        }
    }
}



ps. приложение юзает swing.
...
Рейтинг: 0 / 0
Потоки и методы в них
    #37632794
Miha_S7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LedFly,

передать в основной поток ссылку на Threader и вызывать метод Threader-а из run() Threader-а. Вызов выполнится в том потоке, где был вызов, т.е. в основном. Или... что вы имели в виду?
Если что, нестатичные методы относятся не к потокам, а к объектам классов.
...
Рейтинг: 0 / 0
Потоки и методы в них
    #37632799
Miha_S7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Miha_S7LedFly,
из run() Threader-а
из run() основного
...
Рейтинг: 0 / 0
Потоки и методы в них
    #37632805
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LedFlyЗдравствуйте, такой вопрос: есть 2 потока, основной и Threader. Как из основного потока обратиться к методу Threader'а doSmth() так, чтобы он выполнился в потоке Threader, а не в основном?

Методы не принадлежат потокам. Они пренадлежат классам. Вам нужно понять что поток может выполнить любой метод, перпендикулярно тому в каком классе этот метод находится.
Thread это просот утилитный класс для запуска потоков.
...
Рейтинг: 0 / 0
Потоки и методы в них
    #37632812
LedFly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Miha_S7,
Вообще, речь идет о том чтобы вынести взамодействие с БД в отдельный поток. Вот я и думаю, как это грамотно реализовать.
...
Рейтинг: 0 / 0
Потоки и методы в них
    #37632819
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LedFlyMiha_S7,
Вообще, речь идет о том чтобы вынести взамодействие с БД в отдельный поток. Вот я и думаю, как это грамотно реализовать.
Для GUI - SwingWorker
...
Рейтинг: 0 / 0
Потоки и методы в них
    #37632832
Miha_S7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LedFly,

вы поняли фишку, что методы принадлежать не потокам? Если да, то попробуйте переформулировать ваш вопрос, ответ сразу окажется очевидным.
...
Рейтинг: 0 / 0
Потоки и методы в них
    #37632864
LedFly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Miha_S7, фишку понял, но про swingworker мучает вопрос: у меня все-равно не получиться с его помощью запустить отдельный поток для работы с БД, и по мере надобности обращаться к этому потоку с просьбой вида: выполни запрос, верни результат.
То есть все-равно каждый раз придется запускать поток с определенными параметрами, сообщающими потоку, что надо сделать?
...
Рейтинг: 0 / 0
Потоки и методы в них
    #37632886
Miha_S7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LedFly,

или организовать входящую и выходящую двухстоторонние очереди сообщений с блокировками и отправлять/принимать сообщения через них.
...
Рейтинг: 0 / 0
Потоки и методы в них
    #37632889
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LedFlyMiha_S7, фишку понял, но про swingworker мучает вопрос: у меня все-равно не получиться с его помощью запустить отдельный поток для работы с БД, и по мере надобности обращаться к этому потоку с просьбой вида: выполни запрос, верни результат.
То есть все-равно каждый раз придется запускать поток с определенными параметрами, сообщающими потоку, что надо сделать?
Что не получается? Код в студию! Туториал прочитайте хотя бы по SwingWorker
...
Рейтинг: 0 / 0
Потоки и методы в них
    #37632893
svenom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LedFlyТо есть все-равно каждый раз придется запускать поток с определенными параметрами, сообщающими потоку, что надо сделать?Почитайте про пулы потоков и Executor. В них потоки создаются за вас, а вы им просто передаете задачи.
...
Рейтинг: 0 / 0
Потоки и методы в них
    #37632927
LedFly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не могли бы вы хоть общий принцип рассказать, как работу с БД в отдельный поток вынести?
Как хотелось-бы сделать: один раз при старте программы запустить поток для БД, и ему посылать команды (выполни запрос, залей данные).
...
Рейтинг: 0 / 0
Потоки и методы в них
    #37632960
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LedFlyMiha_S7,
Вообще, речь идет о том чтобы вынести взамодействие с БД в отдельный поток. Вот я и думаю, как это грамотно реализовать.
а сервлета в потоке не хватает? Всё готовое.
...
Рейтинг: 0 / 0
Потоки и методы в них
    #37632970
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123LedFlyMiha_S7,
Вообще, речь идет о том чтобы вынести взамодействие с БД в отдельный поток. Вот я и думаю, как это грамотно реализовать.
а сервлета в потоке не хватает? Всё готовое.расскажи, плииииз, как ты до сервлета дошёл. какие были рассуждения?
...
Рейтинг: 0 / 0
Потоки и методы в них
    #37632973
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LedFlyНе могли бы вы хоть общий принцип рассказать, как работу с БД в отдельный поток вынести?
Как хотелось-бы сделать: один раз при старте программы запустить поток для БД, и ему посылать команды (выполни запрос, залей данные).
SwingWorker Tutorial в гугле вбить трудно?
...
Рейтинг: 0 / 0
Потоки и методы в них
    #37632980
LedFly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz, я уже пол интернета перелопатил, но все примеры рассчитаны на то что вот выполнили какое-то действие при запуске потока, и спокойно его остановили. А для моего случая ничего подходящего найти не удалось. Как этому потоку команды то передавать?
...
Рейтинг: 0 / 0
Потоки и методы в них
    #37632990
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LedFlyBlazkowicz, я уже пол интернета перелопатил, но все примеры рассчитаны на то что вот выполнили какое-то действие при запуске потока, и спокойно его остановили. А для моего случая ничего подходящего найти не удалось. Как этому потоку команды то передавать?
Через SwingWoker и передавать. Он использует пул потоков. Он не создаёт потоки на каждый пук.
...
Рейтинг: 0 / 0
Потоки и методы в них
    #37632997
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grasoff.net,
пятн. ток завтра :)
Лучше расскажи, как доходят до потоков с БД :)
...
Рейтинг: 0 / 0
Потоки и методы в них
    #37632998
Miha_S7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LedFly,

1. создёте реализации Runnable для каждого типа задачи t1, t2
2. cоздаёте экземпляр ThreadPoolExecutor tp
3. вызываете tp.execute(t1); tp.execute(t2). Задачи будут выполняться в отдельном потоке.

Неужели вы когда читали (ли?) документацию не поняли этого?
...
Рейтинг: 0 / 0
Потоки и методы в них
    #37632999
LedFly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz, спасибо, буду дальше копать.
...
Рейтинг: 0 / 0
Потоки и методы в них
    #37633015
LedFly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Miha_S7, меня останавливает что так для каждой мелкой задачи придется свой класс(пусть и анонимный) реализовывать. И получиться много короткоживущих соединений. Пул конечно хорошо, но в моей задаче лучше 1 постоянный поток.
...
Рейтинг: 0 / 0
Потоки и методы в них
    #37633030
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LedFlyMiha_S7, меня останавливает что так для каждой мелкой задачи придется свой класс(пусть и анонимный) реализовывать. И получиться много короткоживущих соединений. Пул конечно хорошо, но в моей задаче лучше 1 постоянный поток.
1. Пользователь однопоточный сам по себе;
2. Соединения можно брать из пула соединений с СУБД. Тогда у вас будет не много короткоживущих соединений, а пара-тройка длинных.
...
Рейтинг: 0 / 0
Потоки и методы в них
    #37633042
Miha_S7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LedFly,

ну, смотря какие задачи. Можно вообще одним классом обойтись с одним строковым полем, в котором будут команды БД.
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Потоки и методы в них
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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