Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 19.02.2019
Сообщений: 18
1

Работа с многопоточностью "Thread"

11.03.2019, 17:53. Показов 1542. Ответов 3

Author24 — интернет-сервис помощи студентам
Симулировать футбольный матч. Играют 2 команды (2 потока). Оба:
Забивают мячи (от 0 до 15 за матч, Random)
Зарабатывают жёлтые карты (от 0 до 15 за матч, Random).
Попадают в офсайд (от 0 до 15 за матч, Random).
Подсчитать правильную статистику.

Если решите задачу буду благодарен.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.03.2019, 17:53
Ответы с готовыми решениями:

Работа с многопоточностью "Thread"
Имеется 4 потока. 1. Умножает переменную на 2 2. Делит на 2 3. Добавляет 2 ...

Работа с многопоточностью "Thread"
Создать 6 потоков. В каждом из которых на консоль выводится буквы(Р, Я, А, Л, И, Д). Нужно...

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

Работа с Thread
Здравсвуйте! Нужна сросно помощь. Имеется несколько интерфейсов лежащих в разный библиотеках....

Работа с Thread
Привет всем. Не могу понять в чем дело. Создаю второй поток но программа всё равно зависает. В чём...

3
295 / 468 / 86
Регистрация: 26.02.2018
Сообщений: 931
Записей в блоге: 2
12.03.2019, 13:30 2
Лучший ответ Сообщение было отмечено TheRainbowDog как решение

Решение

main
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package help;
 
import java.util.Scanner;
 
/**
 *
 * @author i++
 */
public class Help {
    
    public static String s;
    
    public static void main(String[] args) {
        Thread tv = new ComandThread();
        Thread tv1 = new ComandThread();
        tv.start();
        tv1.start();
    }
 
}

клас потока
Кликните здесь для просмотра всего текста
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
62
63
package help;
 
import java.util.Random;
 
/**
 *
 * @author I++
 */
public class ComandThread extends Thread {
    Times t = new Times();
 
    public ComandThread() {
    }
    
    @Override
    public void run() {
        Random r = new Random();//запускаем рандом
        Comand c = new Comand();//создаем команду
        while(!t.entMach()){
            t.addSec(r.nextInt(60) + 1);//увеличиваем время
            if(!t.entMach()){
                int i = r.nextInt(3);
                if(i == 0){
                    int a = r.nextInt(1000);
                    if(a <= 10){
                        //ГОООООЛ!!!!!!!!
                        Events e =  new Events(c.getFootballist() + " забивает гол", t);
                        if(c.getGols() < Comand.GOL_LIMIT){
                            c.addEvent(e);
                            c.addGol(e);
                        }
                    }
                }
                else if(i == 1){
                    int a = r.nextInt(1000);
                    if(a <= 10){
                        //замена
                        if(c.getZam() < Comand.ZAM_LIMIT){
                            Events e =  new Events(c.inversion(), t);
                            c.addEvent(e);
                            c.addZam(e);
                        }
                    }
                }
                else if(i == 2){
                    int a = r.nextInt(1000);
                    if(a <= 10){
                        //Жовта
                        if(c.getYellow() < Comand.YELLOW_CART_LIMIT){
                            Events e =  new Events(c.getFootballist() + " получает жолтую карточку", t);
                            c.addEvent(e);
                            c.addYellow(e);
                        }
                    }
                }
            }
        }
        c.printStatistic();
        System.out.println("______________________________________");
    }
 
    
}

клас команды
Кликните здесь для просмотра всего текста
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
package help;
 
import java.util.Random;
 
/**
 *
 * @author i++
 */
public class Comand {
    private String[] footballist = new String[]{"name1", "name2", "name3", "name4", "name5", "name6", "name7", "name8", "name9", "name10", "name11"};
    private String[] reserv = new String[]{"name01", "name02", "name03", "name04", "name05", "name06", "name07", "name08", "name09", "name010", "name011"};
    private int nZam = 0;
    public static final int ZAM_LIMIT = 3;
    private int gol = 0;
    public static final int GOL_LIMIT = 15;
    private int yellow = 0;
    public static final int YELLOW_CART_LIMIT = 15;
    private Events allEvent = new Events();
    private Events gols = new Events();
    private Events zamina = new Events();
    private Events gorchicnik = new Events();
    
    public int getGols(){
        return gol;
    }
 
//остальные гетры сам допишешь
    
    public void addEvent(Events e){
        allEvent.addEvent(e);
    }
    
    public String getFootballist(){
        Random r = new Random();
        return footballist[r.nextInt(footballist.length)];
    }
    
    public void addGol(Events e){
        gols.addEvent(e);
        gol++;
    }
    
    public void addZam(Events e){
        zamina.addEvent(e);
        nZam++;
    }
    
    public void addYellow(Events e){
        gorchicnik.addEvent(e);
        yellow++;
    }
    
    public void printStatistic(){
        allEvent.printEvent();
        System.out.println("________Голы____________________");
        gols.printEvent();
        System.out.println("________Замены____________________");
        zamina.printEvent();
        System.out.println("________Жолтые карты____________________");
        gorchicnik.printEvent();
    }
 
    public String inversion() {
        String s = "";
        Random r = new Random();
        int i = r.nextInt(footballist.length);
        s += footballist[i] + "заменен на ";
        int a = r.nextInt(reserv.length);
        footballist[i] = new String(reserv[a]);
        reserv[a] = null;
        reservKorkt();
        return s + footballist[i];
    }
 
    private void reservKorkt() {
        String[] r1 = new String[reserv.length - 1];
        int ind = 0;
        for(int i = 0; i < r1.length; i++){
            if(reserv[i] != null){
                r1[ind] = reserv[i];
                ind++;
            }
        }
    }
    
}

клас события
Кликните здесь для просмотра всего текста
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
package help;
 
/**
 *
 * @author i++
 */
public class Events {
    private String s = "";
    
    public Events(){}
    
    public Events(String s, Times t){
        this.s += t.toString() + " ~ " + s;
    }
    
    public void addEvent(Events e){
        s += e.toString() + "\n";
    }
    
    @Override
    public String toString(){
        return s;
    }
    
    public void printEvent(){
        System.out.println(s);
    }
    
}

клас подщета времени
Кликните здесь для просмотра всего текста
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
package help;
 
/**
 *
 * @author i++
 */
public class Times {
    private int hv = 0;
    private int sec = 0;
    
    public void addSec(int i){
        sec += i;
        if(sec >= 60){
            hv++;
            sec -= 60;
        }
    }
    
    public boolean entMach(){
        return hv >= 90;
    }
    
    @Override
    public String toString(){
        return (hv < 10 ? "0" + hv : "" + hv) + ":" + (sec < 10 ? "0" + sec : sec);
    }
}

результат роботы
Кликните здесь для просмотра всего текста
run:
76:36 ~ name5 забивает гол

________Голы____________________
76:36 ~ name5 забивает гол

________Замены____________________

________Жолтые карты____________________

______________________________________
30:40 ~ name9 забивает гол
65:41 ~ name3заменен на name011
86:10 ~ name10 забивает гол

________Голы____________________
30:40 ~ name9 забивает гол
86:10 ~ name10 забивает гол

________Замены____________________
65:41 ~ name3заменен на name011

________Жолтые карты____________________

______________________________________
BUILD SUCCESSFUL (total time: 1 second)

остальное допилишь сам
1
Эксперт функциональных языков программированияЭксперт Java
4486 / 2721 / 485
Регистрация: 28.04.2012
Сообщений: 8,590
12.03.2019, 21:07 3
Цитата Сообщение от TheRainbowDog Посмотреть сообщение
Симулировать футбольный матч.
При чём тут потоки?
0
1 / 1 / 0
Регистрация: 19.02.2019
Сообщений: 18
14.03.2019, 14:58  [ТС] 4
Ну,симулировать через потоки.
0
14.03.2019, 14:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.03.2019, 14:58
Помогаю со студенческими работами здесь

работа с Thread
Итак, создал я 2 потока которые выполняют мне счет. Один поток для одного случая, второй поток для...

Работа с потоками thread
Необходимо распараллелить вычисление интеграла (методом прямоугольников), но иногда программа,...

Работа с классом <thread>
Как выполнить параллельно итерации цикла с помощью класса &lt;thread&gt;? Если использовать другие...

Работа с потоками (Thread)
есть сервис, содержащий список ip адресов разделенный на треды по адресов в каждом, требуется...

Работа с потоками (Thread)
Доброе время суток. У меня такая проблема. Написали программу в которой два потока которые...

Работа с функциями из потоков (Thread)
Здравствуйте. В программу добавлено 2 дополнительных потока(TThread). MyThread **Thr = new...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru