Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Параллелизм для чайников, пример пожалуйста 
V
    Опции темы
Fieral
Дата 8.4.2008, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 250
Регистрация: 10.12.2007

Репутация: нет
Всего: 1



Может кто-нибудь привести пример кода где есть 2 процесса p1 и р2 и две переменных v1 и v2.
Один процесс переписвает значение первой переменной во вторую, а второй значение второй переменной в первую. 

И ещё, если можно, пример где они не ругаются по поводу совместного доступа.
--------------------
Если собака свернулась калачиком, значит будет дождь, а если сидит выпучив глаза, значит у неё запор.
PM MAIL   Вверх
Kangaroo
Дата 8.4.2008, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 21
Всего: 104



Fieral, почитайте FAQ


--------------------
Lost....
PM MAIL MSN   Вверх
mbasil
Дата 8.4.2008, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 399
Регистрация: 4.5.2007
Где: Москва

Репутация: 2
Всего: 13



Код

 class Runner1 implements Runnable {
  private MainClass mc;
  public Runner1( MainClass p_mc ) {
        mc = p_mc;
  }  
  public void run() {
   int i = 1;
   while ( i < 10 ) {
            printANDset( i );
            try {
                   Thread.sleep(1000);
             } catch ( InterruptedException e ) {
                 // sleep interrupted
             }
       i++;
    }
  }
  private void printANDset( int i ) {
    synchronized( mc ) {
       System.out.println("var1= " + mc.getVar1() );
       mc.changeVar2( i * 10 );
     }
  } 
 }
 class Runner2 implements Runnable {
  private MainClass mc;
  public Runner2( MainClass p_mc ) {
        mc = p_mc;
  }  
  public void run() {
   int i = 1;
   while ( i < 10 ) {
           printANDset( i );
           try {
                 Thread.sleep(1000);
            } catch ( InterruptedException e ) {
               // sleep interrupted
            }
      i++;
   }
  }
  private void printANDset( int i ) {
    synchronized( mc ) {
       System.out.println("----------- var2= " + mc.getVar2() );
       mc.changeVar1( i );
     }
  } 
 }
 public class MainClass { 
   private int var1 = 0;
   private int var2 = 0;
 public static void main(String args[]) {
   MainClass m = new MainClass();
   Runner1 r1 = new Runner1( m );
   Runner2 r2 = new Runner2( m );
   Thread t1 = new Thread( r1 );
   t1.start();
   Thread t2 = new Thread( r2 );
   t2.start();
 }
 public int getVar1() {
       return var1;
 } 
 public void changeVar1( int p_var1) {
       var1 += p_var1;
 } 
 public int getVar2() {
       return var2;
 } 
 public void changeVar2( int p_var2) {
       var2 += p_var2;
 } 
}

PM MAIL   Вверх
Fieral
Дата 9.4.2008, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 250
Регистрация: 10.12.2007

Репутация: нет
Всего: 1



не совсем понял про синхронизацию,

вот например есть такая программа:
user posted image

где каждый процесс выполняет:
Код

...
boolean флаг
...

public void run() {
    
        for(;;){


            while( флаг_справа == true ){ 

                
            }
            
            флаг_слева = false;

            while( флаг_слева == false ){
                
            }
            
            Execute();

            флаг_справа=true;
            
        
        }
        

        
    }




1) Требуется ли здесь синхронизация?
2) Бесконечное вращение пустых while наверняка бесцельно ест процессор - как это исправить?
--------------------
Если собака свернулась калачиком, значит будет дождь, а если сидит выпучив глаза, значит у неё запор.
PM MAIL   Вверх
Fieral
Дата 13.4.2008, 02:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 250
Регистрация: 10.12.2007

Репутация: нет
Всего: 1



Всё. Спасибо. Допёр. smile
--------------------
Если собака свернулась калачиком, значит будет дождь, а если сидит выпучив глаза, значит у неё запор.
PM MAIL   Вверх
bilbobagginz
  Дата 13.4.2008, 03:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: нет
Всего: 317



ребят, насколько я понимаю в Java чайник трудно найти, поэтому рекомендую назвать сабж "для кофейников".




--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
Samotnik
Дата 13.4.2008, 03:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Цитата(bilbobagginz @  13.4.2008,  03:28 Найти цитируемый пост)
ребят, насколько я понимаю в Java чайник трудно найти, поэтому рекомендую назвать сабж "для кофейников".

Боюсь, что таких тем придется  сотни создавать! 
Это ж основы, и прочитать их можно в любой литературе по  Java.  Кому нужно тот откроет (либо скачает)  книдку  по  java  и прочитает интересующий его вопрос, а если чего - нить не понял, то сюда !    на форум ! 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0740 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.