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

-------------------------------
первая версия была такая: плевать в рожу (1ый) и бить ногами (2ой) того препода который это пихнул
...
Рейтинг: 0 / 0
01.12.2006, 16:04:31
    #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
01.12.2006, 16:23:57
    #34171130
neuromancer_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параллельные потоки
mysterioЧто за идиотское требование?

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

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

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

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

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

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

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

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

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

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

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

Похожий тынц...
...
Рейтинг: 0 / 0
01.12.2006, 20:04:04
    #34171745
mysterio
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параллельные потоки
Тогда нужно предоставить API на бота иначе "подружить" их не удастся
...
Рейтинг: 0 / 0
01.12.2006, 20:50:42
    #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
01.12.2006, 20:53:23
    #34171818
mysterio
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параллельные потоки
Угу.. только тогда лучше Bot наследовать от некого абстрактного Player, чтобы не проводить различия между игроком и ботом.
...
Рейтинг: 0 / 0
01.12.2006, 21:01:37
    #34171838
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параллельные потоки
mysterioBot наследовать от некого абстрактного Player
Не возражаю.
...
Рейтинг: 0 / 0
03.12.2006, 15:27:27
    #34172989
Anasta
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параллельные потоки
Как я понимаю, чтобы реализовать параллельные потоки, нужно использовать класс Thread, поскольку этот класс позволяет одновременно независимо друг от друга выполнять несколько процессов (методов) (поправьте, пожалуйста, если я ошибаюсь). В том то и дело, что в моей программе класса Thread не используется.
Я не могу придумать, что можно сделать.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Параллельные потоки / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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