Код |
---|
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 потков пот |
ну как - то так, как я понял..