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

Код: 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.
public class ThreadsSample {
    static int count = 15;
    static volatile int countCreatedThreads;

    public static void main(String[] args) {
        System.out.println(new GenerateThread());
    }

    public static class GenerateThread extends Thread {

    	public GenerateThread() {    		
    		super(String.valueOf(++countCreatedThreads));
    		start();
    	}
    	
    	public void run() {
    		while(count >= countCreatedThreads) {
    			GenerateThread t = new GenerateThread();
    			t.toString();
    		}
    	}
    	
		@Override
		public String toString() {
			String name = Thread.currentThread().getName();
			if (name.equals("main")) return "main";
			return name + " created";
		}
    }
}
...
Рейтинг: 0 / 0
потоки
    #38376047
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
t.toString(); по-вашему должно что-то напечатать в консоль?
...
Рейтинг: 0 / 0
потоки
    #38376114
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
блин...
но если не вводить маленькие засыпания в метод run(), то получаю потоки с одинаковыми именами, т.е. получается увеличение ++countCreatedThreads не поспевает за созданием потоков?

main
1 created
1 created
1 created
2 created
5 created
5 created
1 created
5 created
2 created
5 created
2 created
6 created
7 created
1 created
5 created
...
Рейтинг: 0 / 0
потоки
    #38376127
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174но если не вводить маленькие засыпания в метод run(), то получаю потоки с одинаковыми именами, т.е. получается увеличение ++countCreatedThreads не поспевает за созданием потоков?

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


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