Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
 
Dinesk
0 / 0 / 0
Регистрация: 12.02.2015
Сообщений: 32
1

Многопоточность

14.08.2015, 13:32. Просмотров 356. Ответов 2
Метки нет (Все метки)

Здравствуйте, что-то у меня не выходит ...
Должно быть так

А .
. В
А .
. В
А .
. В
... и т.д.


А получается иногда
А .
. В !!!!
. В !!!!
А .
. В
А .
. В
... и т.д.

Код 1 >>
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package Concurrent;
 
public class Play_The_Accordion {
 
    public static void main(String[] args) throws InterruptedException {
        
        
            
            Runnable printA = new PrintRunnable("A  .",10);
            Runnable printB = new PrintRunnable(".  B",9);
 
            Thread threadA = new Thread(printA);
            Thread threadB = new Thread(printB);
            
            threadA.start();
            threadB.start();
            
            
            threadA.join();
            threadB.join();
Код 2 Интерфейс >>
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
package Concurrent;
 
public class PrintRunnable implements Runnable {
    
    private String value;
    private int sleepValue;
    
    public PrintRunnable(String value,int sleepValue){
        
        this.value=value;
        this.sleepValue=sleepValue;
    }
 
    @Override
    public void run() {
        
        
        try {
            for(int i=0;i<10;i++){
            
            Thread.sleep(sleepValue);
            System.out.println(value);
            }
        
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }
 
}
Заранее спасибо .
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.08.2015, 13:32
Ответы с готовыми решениями:

Многопоточность
сделать Дизайн приложения, по крайней мере из двух нитей: - Один для обработки...

Многопоточность
Добрый день, уважаемые гуру многопоточного программирование. Если Вас не...

Многопоточность
Данный код должен в теории выдавать произвольное число (в определенном...

многопоточность
Мне нужно что бы сообщение System.out.println(String.format(&quot;%1$s будит...

Многопоточность
Люди, не могли бы вы на пальцах объяснить, что такое пул потоков, а то...

2
Welemir1
Автоматизируй это!
844 / 573 / 234
Регистрация: 30.03.2015
Сообщений: 2,208
14.08.2015, 16:53 2
почему это "должно быть"? у вас в коде нигде это не обеспечено. Вы же помните что операционная система сама распределяет очереди потоков, поэтому запустим одновременно два потока, мы не можем гарантировать какой из них отработаем первым.
Решить это можно с помощью более больших слипов или лучше wait notify
0
easybudda
Модератор
Эксперт CЭксперт С++
10148 / 6055 / 1522
Регистрация: 25.07.2009
Сообщений: 11,476
17.08.2015, 00:21 3
Не лучший, но работающий вариант:
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
public class TwoThreads {
    class SyncThread extends Thread {
        private Object mutex;
        
        public SyncThread(String name, Object _mutex) {
            super(name);
            mutex = _mutex;
        }
        
        public void run() {
            for ( int i = 1; i < 11; ++i ) {
                synchronized(mutex) {
                    System.out.println(getName() + ": " + i);
                }
                try {
                    Thread.sleep(1000);
                }
                catch (InterruptedException e) {
                    System.out.println(getName() + " interrupted!");
                }
            }
        }
    }
    
    public TwoThreads() {
        Object mutex = new Object();
        SyncThread threadA = new SyncThread("Thread A", mutex);
        SyncThread threadB = new SyncThread("Thread B", mutex);
        
        threadA.start();
        threadB.start();
        
        try {
            threadA.join();
            threadB.join();
        }
        catch (InterruptedException e) {
            System.out.println("Blah blah blah...");
        }
    }
    
    public static void main(String[] args) {
        new TwoThreads();
    }
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.08.2015, 00:21

Многопоточность
Кто-нибудь может подсказать, почему при k=2 и z=1 выбрасывается ошибка...

Многопоточность
Здравствуйте. Тяжелая однако для меня тема многопоточности. Столкнулся вот с...

Многопоточность
Здравствуйте, играюсь с многопоточностью. Подскажите пожалуйста дает ли она...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru