]]>
]]>
IT Coders
Логин:
Пароль:
  ]]>Войти]]> ]]>Регистрация]]> ]]>Забыли?
 
 
СКОРОСТЬ ->
 
КАЧЕСТВО ->
 
УСПЕХ...
Персональный web-сайт Богословской Оксаны СДЕЛАНО БОГОМ - Интернет-журнал Акксессуары для iPhone, iPad, iPod touch и Samsung Galaxy :: iHave Свадебный журнал WedInMoscow Портал школы "Золотое Сечение" Персональный web-сайт Королёвой Надежды Михайловны Кинохабар - Интернет-гипермаркет фигурок персонажей из фильмов, кино сувениров и прочего околокиношного хабара Официальный сайт компании "Белсис" Radhika - интернет-магазин специй, вегетарианских и диетических продуктов Техно Офис - Компьютерный интернет-магазин Официальный сайт Льва Лещенко Интернет-магазин InFabrica - техника для Вас
 

Альтернативное содержимое

Закажите сайт у компании IT Coders
]]> ]]>
 
ВКонтакт Facebook Одноклассники Twitter Яндекс Livejournal Liveinternet Mail.Ru
Страницы: 1
Многопоточность Архив со старого форума компании IT Coders
Такой вопрос, господа: как мне в Java сделать такую задачу, чтобы почленное сложение 2 векторов можно было разделить на несколько потоков сразу и выполнять одновременно и засечь время.
А по-точнее можно сформулировать задачу, а то чет я не понял?? Зачем делить на потоки, если быстрее и так выполнить, все в одном?
Ну вощем надо лабу сделать: имеется 2 массива целых чисел из 1000000 элементов, нужно их все почленно сложить, при этом разбив на несколько потоков и засечь время.
Код
public class Vector implements Runnable {
    public int limit = 10000;//количество элементов в векторе
    public long iter = 10000;
    public int i_vect1[]  = new int [limit];
    public int i_vect2[]  = new int [limit];
    public int i_vect_result[] = new int[limit];
    
    Thread t;
    String name;
    public int param;
    public int num;

    public void init(){
        //заполнение вектора случайными числами
        Random r = new Random();
        for (int i = 0; i < this.limit-1 ;i++ ){
            i_vect1[i] = r.nextInt(100);
            i_vect2[i] = r.nextInt(100);
        }


    }

      Vector(String threadname, int parameter, int number){
        name = threadname;
        param = parameter;
        num = number;
        t = new Thread(this,threadname);
        //System.out.println("Вычисляется поток вектора:"+ name);
        t.start();
    } 
    

    public void t_start(int parameter, int number){
      num = number;
      param = parameter;
      t.start();
    }

    public void run(){
        init();
        final long time_start = System.currentTimeMillis();
        System.out.println("Поток № " + this.num + " по имени:"+ t.getName() +   " стартовал");
        int steep = this.limit / 10;  //делим вектор на 10 потоков
        int block_start = (this.num * steep) - 1;
        if (this.num == 0) {block_start = 0;}
        int block_end = (block_start + steep) - 1;
        for (int i = block_start; i < block_end ; i++){
             for(long j = 0; j < this.iter; j++){
                i_vect_result[i]= i_vect1[i] + i_vect2[i];
              }
        }
        final long time_stop = System.currentTimeMillis();
        long time_result = time_stop - time_start;
        System.out.println("Поток № " + this.num + " по имени:"+ t.getName() + " завершен. Время выполнения: " + time_result);
    
}

а затем вызывать в майне потоки
Код
System.out.println("Старт 10 новых потоков:");
        Vector tr81 = new Vector("10_1",10,0);
        Vector tr82 = new Vector("10_2",10,1);
        Vector tr83 = new Vector("10_3",10,2);
        Vector tr84 = new Vector("10_4",10,3);
        Vector tr85 = new Vector("10_5",10,4);
        Vector tr86 = new Vector("10_6",10,5);
        Vector tr87 = new Vector("10_7",10,6);
        Vector tr88 = new Vector("10_8",10,7);
        Vector tr89 = new Vector("10_9",10,8);
        Vector tr810 = new Vector("10_10",10,9);
        try{
            tr81.t.join();
            tr82.t.join();
            tr83.t.join();
            tr84.t.join();
            tr85.t.join();
            tr86.t.join();
            tr87.t.join();
            tr88.t.join();
            tr89.t.join();
            tr810.t.join();

        } catch (InterruptedException e){
            System.out.println("Прерывание 10 потоков");
        } 
        System.out.println("Завершение всех 10 потков пот

ну как - то так, как я понял..
ага, спс большое, идею понял, все вроде работает)
Страницы: 1
01.12.2021    ]]>Новогодние скидки на «1С-Битрикс: Управление сайтом» и «Битрикс24» ]]>
Встречайте: новогодние скидки до 35% на «1С-Битрикс: Управление сайтом» и «Битрикс24»! С 1 по 31 декабря...
23.11.2021    ]]>Новый Битрикс24.Сиэтл. Попробуйте прямо сейчас!]]>
Бесплатный складской учет внутри CRM, скрам для системной работы над задачами, виртуальный WhatsApp для продаж в мессенджере и многое другое...
22.10.2021    ]]>Время:Битрикс24. Регистрируйтесь на презентацию обновлений!]]>
Присоединяйтесь к нам 23 ноября в 11.00 МСК и смотрите презентацию обновлений Битрикс24. Онлайн....
18.05.2021    ]]>Новый Битрикс24 изменил сценарии продаж и совместной работы]]>
18 мая мы представили Новый Битрикс24 – набор инструментов, которые помогают бизнесу адаптироваться к любым условиям и продолжать расти...
19.04.2021    ]]>Новый Битрикс24. Регистрируйтесь, чтобы увидеть и попробовать первыми!]]>
18 мая мы выпустим большое обновление Битрикс24. Это будет совершенно новый формат релиза. Все, что мы покажем на презентации, будет сразу...
Ваша корзина пуста
]]> Вакансии компании IT Coders ]]>
Ваша корзина пуста
]]> ]]>
]]> Расчитайте стоимость услуг ]]>
]]>
 

]]>
© IT Coders, 2008 - 2022
Под управлением CMS 1c-bitrix