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

Ошибка после повторного запуска потока

09.08.2015, 20:30. Показов 1949. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем, решил попробовать себя в потоках но как-то не получилось.
Проблема заключается в том что при первом нажатии на кнопку все ОК, но пр последующих java кидает exception!
Ребят помогите разобраться пожалуйста.
Вот код.
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
49
50
51
52
53
54
55
56
57
58
59
60
61
import net.miginfocom.swing.MigLayout;
 
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
 
 
public class MainFrame extends JFrame {
 
    private JButton btn = new JButton("vasya");
    private JTextArea memo = new JTextArea("lolka");
    private JPanel panel = new JPanel();
    private Thread thr = new Thread(new ReadFile());
 
    public void Create(){
 
        btn.addActionListener(new OnClick());
 
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(new Dimension(640, 480));
        setLocationRelativeTo(null);
 
        panel.setLayout(new MigLayout());
        add(panel);
        panel.add(btn);
        panel.add(memo);
        setVisible(true);
    }
    private class ReadFile implements Runnable {
        @Override
        public void run() {
            try{
                FileReader o = new FileReader("res//1.txt");
                BufferedReader in = new BufferedReader(o);
                String s;
                while((s=in.readLine())!=null){
                    memo.insert(s, 0);
                }
                in.close();
                o.close();
            }catch (Exception e){
                System.out.println(e);
            }
 
 
        }
    }
 
    private class OnClick implements ActionListener{
 
        @Override
        public void actionPerformed(ActionEvent e) {
            thr.start();
 
        }
    }
 
 
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.08.2015, 20:30
Ответы с готовыми решениями:

Исключение повторного запуска
Допустим запущена некая программа, пользователь пытается запустить вторую копию. Как сделать чтобы программа определила что ее копия уже...

Запрет повторного запуска идентичного потока
Thread th = new Thread(delegate() { DoWork(); }); th.Start(); void DoWork() { } Допустим запускаю в...

Компьютер выключился, после повторного запуска выключается. Заранее спасибо!
конфиг. core i7 5820k msi x99s gaming 7 ddr4 16gb corsair vengance Enermax Liqtech 240 - охлаждение ssd hyperx 120gb+WD blue 1tb ...

6
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,687
Записей в блоге: 29
09.08.2015, 20:48
а какая ошибка?
Свинг не потокобезопасен, то есть могут быть проблемы с обновлением элементов, таких как текстфилд в отдельном потоке, лучше испольщовать invokeLater.
0
0 / 0 / 0
Регистрация: 09.08.2015
Сообщений: 12
09.08.2015, 21:54  [ТС]
Вот:
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
Exception in thread "AWT-EventQueue-0" java.lang.IllegalThreadStateException
    at java.lang.Thread.start(Thread.java:705)
    at MainFrame$OnClick.actionPerformed(MainFrame.java:57)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6525)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6290)
    at java.awt.Container.processEvent(Container.java:2234)
    at java.awt.Component.dispatchEventImpl(Component.java:4881)
    at java.awt.Container.dispatchEventImpl(Container.java:2292)
    at java.awt.Component.dispatchEvent(Component.java:4703)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
    at java.awt.Container.dispatchEventImpl(Container.java:2278)
    at java.awt.Window.dispatchEventImpl(Window.java:2750)
    at java.awt.Component.dispatchEvent(Component.java:4703)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.awt.EventQueue$4.run(EventQueue.java:729)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Добавлено через 1 час 3 минуты
Добавил тру кэтч в метод старт и появляется другая ошибка.
Java
1
2
"C:\Program Files\Java\jdk1.8.0_51\bin\java" -Didea.launcher.port=7535 "-Didea.launcher.bin.path=C:\Program Files (x86)\JetBrains\IntelliJ IDEA Community Edition 14.1.4\bin" -Dfile.encoding=windows-1251 -classpath "C:\Program Files\Java\jdk1.8.0_51\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\rt.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext\zipfs.jar;C:\Users\there\Desktop\IDEAProjects\untitled1\out\production\untitled1;C:\Users\there\Downloads\miglayout-3.7.jar;C:\Program Files (x86)\JetBrains\IntelliJ IDEA Community Edition 14.1.4\lib\idea_rt.jar" com.intellij.rt.execution.application.AppMain Main
java.awt.event.ActionEvent[ACTION_PERFORMED,cmd=vasya,when=1439146367437,modifiers=Button1] on javax.swing.JButton[,7,7,67x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource@71975fef,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=vasya,defaultCapable=true]
0
40 / 40 / 20
Регистрация: 14.05.2015
Сообщений: 116
09.08.2015, 23:08
there, вы пытаетесь стартовать уже запущенный поток.
попробуйте так:
Java
1
2
thr = new Thread(new ReadFile());
thr.start();
0
0 / 0 / 0
Регистрация: 09.08.2015
Сообщений: 12
09.08.2015, 23:20  [ТС]
lyolik, Спасибо огромное помогло! Я вот только вчера сел за яву, после паскаля вообще ни так.
Если тебе не сложно можешь в лс мыло сбросить, мне бы не помешала консультация опытного человека, и спасибо еще раз.
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
10.08.2015, 19:54
Цитата Сообщение от there Посмотреть сообщение
Добавил тру кэтч в метод старт
Адовый ад. Вместо того чтобы пофиксить ошибку, вы её игнорируете.

Нужно обернуть вызов memo.insert(s, 0); в SwingUtilities.invokeLater
Java
1
2
3
4
5
SwingUtilities.invokeLater(new Runnable() {
    public void run() {
        memo.insert(s, 0);
    }
});
0
636 / 528 / 165
Регистрация: 01.04.2010
Сообщений: 1,843
11.08.2015, 09:54
Потоки одноразовые. В это и проблема.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.08.2015, 09:54
Помогаю со студенческими работами здесь

Программа работает как надо только после повторного запуска
Здравствуйте. У меня вопрос почему написанная программа работает как надо только после повторного запуска, а не сразу. У меня Лабвиу...

Выпадающий список в ComboBox появляется только после повторного запуска формы
Нажимаем кнопку "Начало работы", появляется форма, но в ComboBox выпадающий список не появляется, выключаем форму, после повторного нажатия...

После закрытия приложения и его повторного запуска, добавленные данные исчезают из БД
Доброго времени суток, уважаемые! Проблема следующего характера: есть приложение, мной написанное, работающее с БД access (mdb). Данные...

Динамический массив - после повторного нажатия на кнопку вылетает ошибка access violation
есть код type Tmater = record supplier : integer; mat : Integer; count : Integer; end; var mat : array...

Запрет повторного запуска приложения
во время открытия приложения оно должно проверить запущена другая копия или нет, если да то выход.Одним словом что бы приложение нельзя...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru