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

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Потоки 
:(
    Опции темы
Neox_GeForce
Дата 17.1.2010, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Есть некая задача смоделировать процессы ОС.
Суть в том что нужно сделать 2 потока которые генерируют процесы(В моем случае числа)
Код

import java.util.Random;

/**
 * Created by IntelliJ IDEA.
 * User: Администратор
 * Date: 17.01.2010
 * Time: 11:04:40
 * To change this template use File | Settings | File Templates.
 */
public class Proccess extends Thread{

    private int numberProccess =0; //номер процесса
    private int proccessed1=0,destroyed=0; //количество уничтожених и  успешных процессов
    private boolean run=true;
    public volatile  boolean  proccessed=false; //исполнился ли процесс
    public int getNumber(){
        return this.numberProccess;
    }


    public Proccess(int numberProccess,String name) {
        this.numberProccess = numberProccess;

        this.setName(name);

    }

    public boolean isRun() {
        return run;
    }

    public void setRun(boolean run) {
        this.run=run;
    }
      public void run(){
        System.out.println("Start " +this.getName()+   " proccess");
          while(run){

              for(int i=0;i<numberProccess;i++) {
System.out.println(this.getName()+" :generated "+i); //Генерирую процесс
                  proccessed=false; //Он не завершился
                  try {
                      Thread.sleep((long) (Math.random()*1000)); //Жду
                  } catch (InterruptedException e) {
                      e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
                  }


                  if(proccessed=true) {proccessed1++;proccessed=false;} else destroyed++; // (обычние счетчики)


              }

              this.setRun(false);
System.out.println(this.getName()+"  proccessed :"+proccessed1 +"  Destroyed :"+destroyed); //Результаты




       } }


}



Также я смоделировал процессор который обрабатывает потоки

Код

/**
 * Created by IntelliJ IDEA.
 * User: Администратор
 * Date: 17.01.2010
 * Time: 11:05:00
 * To change this template use File | Settings | File Templates.
 */
public class CPU extends Thread{
    private Proccess first,second;


    public CPU(Proccess first, Proccess second) {
        this.first = first;
        this.second = second;
        first.setPriority(Thread.MAX_PRIORITY); //Эта для теста
        first.start(); //запускаем поток 1
        second.start();
    }

    public void run() {
        while (first.isAlive() || second.isAlive()) {
    
            try {


            first.proccessed=true //исполнить процес  первого потока                  ;
                System.out.println(first.getName()+" proccessed "+first.getNumber());
                Thread.sleep((long) (Math.random()*8000)); //Подождать
                second.proccessed=true; //Исполнить процес второго потока
                System.out.println(second.getName()+" proccessed "+second.getNumber());

} catch (InterruptedException e) {
                e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
            }
        }

    }
}



Код

/**
 * Created by IntelliJ IDEA.
 * User: Администратор
 * Date: 17.01.2010
 * Time: 11:04:24
 * To change this template use File | Settings | File Templates.
 */
public class Main {
    public static void main(String[] args){
        Proccess ft=new Proccess(5, "First");
        Proccess st=new Proccess(5, "Second");
        CPU cpu=new CPU(ft,st);
        cpu.run();

    }
}




Если у потоков которые генерируют процессы задержка намного меньше  а у  потока который их обрабатывает она побольше то почему  результаты такие, ни один процес не уничтожается.
Код

First proccessed 5
Start First proccess
First :generated 0
Start Second proccess
Second :generated 0
First :generated 1
First :generated 2
Second :generated 1
First :generated 3
Second proccessed 5
First proccessed 5
Second :generated 2
Second :generated 3
First :generated 4
Second :generated 4
Second  proccessed :5  Destroyed :0
First  proccessed :5  Destroyed :0
Second proccessed 5




--------------------
user posted image
Челябинские программисты настолько суровы, что обходятся без компиляторов.
Челябинские программисты настолько суровы, что считают ассемблер недопустительной роскошью - они вручную магнетизируют участки жесткого диска.
PM MAIL ICQ   Вверх
powerOn
Дата 17.1.2010, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


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

Репутация: 47
Всего: 159



Модератор: Название темы должно отражать ее суть!


--------------------
user posted image нет времени думать - нужно писать КОД!

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.0648 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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