Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/21: Рейтинг темы: голосов - 21, средняя оценка - 4.81
91 / 86 / 12
Регистрация: 08.08.2013
Сообщений: 667

Класс в отдельном потоке

22.12.2014, 16:59. Показов 3978. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не пинайтесь, знаю, тема жеванная, но ...
В общем есть класс со своими методами, конкретней это работа с БД mysql.

Вот примерный класс BD.java

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
public class BD extends Thread{
...
}
public void metod1(){//ПЕРВЫЙ МЕТОД
...
}
public void metod2(String s){//ВТОРОЙ МЕТОД
...
}
@Override
    public void run(){
      
    }
Вот второй класс, главный - my.java
Java
1
2
3
4
5
6
....
//Сначала я создаю экемпляр класса BD
BD bd = new BD();
//Запускаю поток
bd.start();
....
Как мне теперь вызвать metod1 из экземпляра класса BD в новом потоке?
Ведь в потоке выполняется всё что находится в методе run, правильно?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.12.2014, 16:59
Ответы с готовыми решениями:

Пропарсить XML в отдельном потоке
Пытаюсь пропарсить xml в отделном потоке: ошибок не получаюю но и результата нет. цифры "1234567" отображаются а xml нет. в чём...

Создание файла в отдельном потоке
Как создавать файл и работать с ним в отдельном потоке? код new Thread(new Runnable() { @Override public void run() { ...

Выполнение в отдельном потоке
Необходимо реализовать выполнение данного класса в отдельном потоке. У меня никак не выходит, прошу помощи) import java.awt.Color; ...

8
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
23.12.2014, 01:41
Цитата Сообщение от _Night_Scream_ Посмотреть сообщение
Ведь в потоке выполняется всё что находится в методе run, правильно?
всё что в методе run, и всё что там вызовется тоже.
Надо просто вызвать metod1 в методе run()
1
91 / 86 / 12
Регистрация: 08.08.2013
Сообщений: 667
23.12.2014, 22:15  [ТС]
Это я понимаю... что надо вызывать в run.
Я не понимаю как можно из другого класса вызвать metod1
Я же не могу написать bd.metod1
Как его вызвать? Можно пример? В голове никак не укладывается.
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
23.12.2014, 22:18
_Night_Scream_, я не понимаю, в чем ваша проблема, и что вы хотите сделать.

Надо вызвать method1? Так вызывайте
Java
1
2
BD bd = new BD();
bd.method1();
Надо запустить поток? Запускайте
Java
1
2
BD bd = new BD();
bd.start();
Вроде всё просто.
1
91 / 86 / 12
Регистрация: 08.08.2013
Сообщений: 667
23.12.2014, 23:26  [ТС]
turbanoff, Я хочу чтобы код который в metod1 класса BD выполнялся в отдельном потоке.
При bd.method1() код будет выполняться в потоке из которого вызывается.

Итак, есть класс BD
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class BD extends Thread{
...
}
public void metod1(){//ПЕРВЫЙ МЕТОД
...
}
public void metod2(String s){//ВТОРОЙ МЕТОД
while(true){
//ничего не делаем
}
}
@Override
    public void run(){
      
    }
Есть другой класс в котором
Java
1
2
3
4
5
6
7
public static void main(String[] args) {
        BD bd = new BD();
        bd.start();//ТУТ СТАРТОВАЛ ВТОРОЙ ПОТОК
        bd.metod2("string"); //Я ХОЧУ ВЫПОЛНИТЬ ЭТОТ МЕТОД ВО ВТОРОМ ПОТОКЕ
        System.out.prinln("ЭТА СТРОКА НИКОГДА НЕ ВЫВЕДЕТСЯ");
    }    
}
Фактически metod2 должен выполниться в run, я не понимаю как подсовывать в run методы с аргументами((
Тоесть есть класс, со своим отдельным потоком, у этого класса есть 100500 методов у каждого метода по 100500 аргументов вот этими методами я и хочу рулить из другого класса.
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
24.12.2014, 00:22
Создайте еще один класс, в который вы сможете передать аргументы для нужного вам метода и еще ссылку на bd.
Например, вот так с помощью анонимного класса
Java
1
2
3
4
5
6
7
8
        final BD bd = new BD();
        Thread method2Thread = new Thread(new Runnable() {
            @Override
            public void run() {
                bd.metod2("string");
            }
        });
        method2Thread.start();
1
 Аватар для MrKvant
7 / 7 / 4
Регистрация: 15.12.2014
Сообщений: 17
24.12.2014, 15:54
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Main {
    public static void main(String[] args) {
        new Thread(Main::method1) {{
            start();
            new Thread(Main::method2) {{
                start();
            }}.join();
        }}.join();
    }
 
    private static void method1() {System.out.println("m1");}
 
    private static void method2() {System.out.println("m2");}
}
method1() и method2() в новых потоках вызвались.
1
91 / 86 / 12
Регистрация: 08.08.2013
Сообщений: 667
25.12.2014, 11:09  [ТС]
MrKvant, интересно, а где можно почитать об этом? Такого подхода я не встречал. Что гуглить?
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
25.12.2014, 12:34
_Night_Scream_, Вы про method references? http://docs.oracle.com/javase/... ences.html
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.12.2014, 12:34
Помогаю со студенческими работами здесь

Ввод данных в отдельном потоке
Здравствуйте, нужно реализовать ограничение во времени при ввода ответа на вопрос. Но даже когда поток InputThread мертв (когда игра...

Класс в отдельном потоке
Всем доброго дня и хорошего настроения! :) Подскажите, у меня есть класс Calculate как его запустить в отдельном потоке при нажатии на...

Класс в отдельном потоке
Привет. Мне нужно, чтобы класс выполнялся в отдельном потоке. #include <iostream> #include <thread> #include...

Создать приложение, в отдельном потоке вычисляющее значение w и непрерывно обновляющее его в потоке
Ребят, с потоками не работал не когда. Есть задание , я понимаю что хотят, а вот как сделать потоками хз . Создайте приложение, в...

GDI+. Почему в отдельном потоке картинки сохраняются как белые прямоугольники, а в основном потоке - всё Ок?
Всем привет, делаю функцию уменьшения картинок при помощи библиотеки GDI+, в отдельном потоке происходит уменьшение картинки и её...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru