powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Приостановка\Закрытие потока другим потоком
5 сообщений из 5, страница 1 из 1
Приостановка\Закрытие потока другим потоком
    #37682964
krab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.

Три кнопки "запуск", "остановка" и "возобновление" сервера.
Как можно это реализовать без использования устаревших методов t.suspend() и t.resume() ?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
 t = new ThreadServer();

       buttonStart.addActionListener(new ActionListener(){

                @Override
                public void actionPerformed(ActionEvent e) {
                        t.start();
                }
            });

        buttonStop.addActionListener(new ActionListener(){

                @Override
                public void actionPerformed(ActionEvent e) {
                    t.suspend();
                }
            });

        resume.addActionListener(new ActionListener(){
                @Override
                public void actionPerformed(ActionEvent e) {
                    t.resume();
                }
            });

    private class ThreadServer extends Thread{
        @Override
        public void run() {
      //  запускается бесконечный цикл для прослушивания клиентов
        new ChatServer();    
        }
    }



Заранее спасибо
...
Рейтинг: 0 / 0
Приостановка\Закрытие потока другим потоком
    #37683002
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В принципе никак. Но возможно вам подойдет такое решение -

В потоке завести поле isRunned, по клику на resume и suspend кнопкам устанавливать или сбрасывать этот флаг, внутри метода run обрамить всю работу конструкцией вида :

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
public void run(){
     for(;;){
          if(isRunned){
               //continue to work
          }else{
             //a тут можете вызвать Thread.sleep  или wait();
          }
    }
}
...
Рейтинг: 0 / 0
Приостановка\Закрытие потока другим потоком
    #37683008
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
цикл не обязательно делать бесконечным.
в JavaDoc почитайте почему эти методы пометили как deprecated.
рассмотрите interrupt() в качестве альтернативы
...
Рейтинг: 0 / 0
Приостановка\Закрытие потока другим потоком
    #37683012
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
t = new ThreadServer();

       buttonStart.addActionListener(new ActionListener(){

                @Override
                public void actionPerformed(ActionEvent e) {
                        t.start();
                }
            });

        buttonStop.addActionListener(new ActionListener(){

                @Override
                public void actionPerformed(ActionEvent e) {
                    t.suspendThread();
                }
            });

        resume.addActionListener(new ActionListener(){
                @Override
                public void actionPerformed(ActionEvent e) {
                    t.resumeThread();
                }
            });

    private class ThreadServer extends Thread{
        private boolean volatile isRunned;
        private Lock serverLock;
        private Condition readyoRunCondition = serverLock.newCondition();
        @Override
        public void run() {
       for(;;){
          if(isRunned){
               //continue to work new ChatServer();    
          }else{
            readyoRunCondition.await();
          }
    }

     public void suspendThread(){
           isRunned = false;
    }

public void resumeThread(){
      isRunned = false;
      readyoRunCondition.notifyAll();
}
    }
...
Рейтинг: 0 / 0
Приостановка\Закрытие потока другим потоком
    #37683336
krab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Приостановка\Закрытие потока другим потоком
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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