powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Параллельные потоки
12 сообщений из 12, страница 1 из 1
Параллельные потоки
    #34170904
Anasta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть программа на Java - вариант игры в шашки, в которой можно перемещать шашки в соседние клетки и через шашку другого цвета (только одну) и удалять эту шашку.
Требуется, чтобы в программе было не менее 2-х параллельных потоков.
Посоветуйте, пожалуйста, какие параллельные потоки могут быть в этом случае?
...
Рейтинг: 0 / 0
Параллельные потоки
    #34171033
expp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
один потока думать как можно походить. другой потока рисовать и шашки таскать

-------------------------------
первая версия была такая: плевать в рожу (1ый) и бить ногами (2ой) того препода который это пихнул
...
Рейтинг: 0 / 0
Параллельные потоки
    #34171057
mysterio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что за идиотское требование?

Хотя, считайте, что Вы его уже выполнили (весьма странно, почему Вы об этом не знаете):

вот простенький пример, который покажет Вам, что в программе всегда более одного потока:
Код: plaintext
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.
 package  threadtest;

 import  javax.swing.JFrame;
 import  javax.swing.JScrollPane;
 import  javax.swing.JTextArea;

/**
 *
 * @author Mysterio
 */
 public   class  Main {
     public   static   void  main(String[] args) {
        //Инициализируем swing
        JFrame frame =  new  JFrame("test");
        
        
        JTextArea textArea =  new  JTextArea();
        
        Thread[] list = listThreads();
         for  ( int  i =  0 ; i < list.length; i++) {
            textArea.append((i +  1 ) + ":" + list[i].getThreadGroup().getName() + ":" + list[i].getName() + "\n");            
        }
        
        frame.add( new  JScrollPane(textArea));
        
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
    }  
    
     public   static  Thread[] listThreads() {
        ThreadGroup tg = Thread.currentThread().getThreadGroup();
        
        //Добрались до корня.
         while  (tg.getParent() !=  null )
            tg = tg.getParent();
        
        Thread[] list =  new  Thread[tg.activeCount()];
        
        tg.enumerate(list);
        
         return  list;
    }
}
...
Рейтинг: 0 / 0
Параллельные потоки
    #34171130
neuromancer_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mysterioЧто за идиотское требование?

наверно препод попросил отточить навыки использования synchronized :)
...
Рейтинг: 0 / 0
Параллельные потоки
    #34171154
mysterio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так и задачу нужно ставить более показательно.

Если синхронайзить GUI, то там нужно использовать invokeAndWait(), invokeLater().

А так ставить задачу: напишите шашки и чтоб было не менее двух потоков - идиотизм чистой воды.
...
Рейтинг: 0 / 0
Параллельные потоки
    #34171249
neuromancer_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mysterioТак и задачу нужно ставить более показательно.

Если синхронайзить GUI, то там нужно использовать invokeAndWait(), invokeLater().

А так ставить задачу: напишите шашки и чтоб было не менее двух потоков - идиотизм чистой воды.

Если студентческая задача,то не вижу идиотизма,т.к это один из фактов уровня образования в наших вузах.

ps:я студент (вечерник) и нам тоже дают задания примерно в таком виде.
...
Рейтинг: 0 / 0
Параллельные потоки
    #34171702
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mysterioТак и задачу нужно ставить более показательно.

Если синхронайзить GUI, то там нужно использовать invokeAndWait(), invokeLater().

А так ставить задачу: напишите шашки и чтоб было не менее двух потоков - идиотизм чистой воды.
Хм.. а я себе это так представляю:

Препод: Хех! А сичас мы проведем шашечный tournament! А чей бот победитъ - получит зачот за симестр!

Студенты: :-o

Похожий тынц...
...
Рейтинг: 0 / 0
Параллельные потоки
    #34171745
mysterio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда нужно предоставить API на бота иначе "подружить" их не удастся
...
Рейтинг: 0 / 0
Параллельные потоки
    #34171813
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mysterioТогда нужно предоставить API на бота иначе "подружить" их не удастся

Верно.

Один интефейс уже есть. Это Thread или Runnable. Осталось придумать протокол взаимодействия двух ботов.

Или двух ботов и арбитра.

Да. Точно.

Схема с арбитром мне больше нравится. Ведь бот может сделать и неправильный ход по доске, а проверить его будет некому.

Где-то так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
public class CheckerJudge 
{
// desk, pawns, rules, statistics
}

public class CheckerBot implements Runnable
{
// bla-bla
}

public class AnastaCheckerBot extends CheckerBot
{

// .....

 public AnastaCheckerBot(CheckerJudge cj)
 {
 ...
 }
}
...
Рейтинг: 0 / 0
Параллельные потоки
    #34171818
mysterio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Угу.. только тогда лучше Bot наследовать от некого абстрактного Player, чтобы не проводить различия между игроком и ботом.
...
Рейтинг: 0 / 0
Параллельные потоки
    #34171838
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mysterioBot наследовать от некого абстрактного Player
Не возражаю.
...
Рейтинг: 0 / 0
Параллельные потоки
    #34172989
Anasta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как я понимаю, чтобы реализовать параллельные потоки, нужно использовать класс Thread, поскольку этот класс позволяет одновременно независимо друг от друга выполнять несколько процессов (методов) (поправьте, пожалуйста, если я ошибаюсь). В том то и дело, что в моей программе класса Thread не используется.
Я не могу придумать, что можно сделать.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Параллельные потоки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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