多线程数组内容?
Multithreading Array Content?
这是为了完成一项大学作业。如果这是在正确的轨道上,我只是想要一些输入。分配要求使用多个线程来添加数组内容。这是我推断的是准确的,但同样,我不确定。任何建议或意见都会很棒。 :)
我不知道这是否在正确的轨道上,所以我希望得到一些专业的批评。
import java.util.*;
public class threadtest1 extends Thread
{
int sum, sum2;
int N = 5;
int [] array = {1,3,2,4,5,6,7,8,9,10};
int [] temp = new int [N];
public static void main (String[] args)
{
threadtest1 run = new threadtest1();
run.go();
}
public void go()
{
threadtest1 t1 = new threadtest1();
threadtest1 t2 = new threadtest1();
threadtest1 t_Total = new threadtest1();
//To seperate and calculate the array by thread:
/**** FOR THREAD 1 ****/
t1.start();
temp = Arrays.copyOfRange(array, 1,5);
System.out.println("Temp : " + temp.length);
for (int j = 0; j < temp.length; j++)
{
//sum = temp.get(i);
sum += sum + j;
System.out.println("T1 : " + sum);
}
/**** FOR THREAD 2 ****/
t2.start();
temp = Arrays.copyOfRange(array, 6, 10);
for (int k = 0; k < temp.length; k++)
{
//sum = temp.get(i);
sum2 += sum2 + k;
System.out.println("T2 : " + sum2);
}
/**** FOR THREAD_TOTAL ****/
t_Total.start();
sum = sum + sum2;
System.out.println("T_Total: " + sum);
}
}
不,你根本没有走在正确的轨道上。当你启动一个线程时,它的 run()
方法被执行(在一个单独的线程中)。默认情况下,run()
方法什么都不做。而且您还没有覆盖此方法。因此,您启动了两个什么都不做的线程,并在主线程中对数组执行计算。
您应该重新阅读 Java concurrency tutorial。
这是为了完成一项大学作业。如果这是在正确的轨道上,我只是想要一些输入。分配要求使用多个线程来添加数组内容。这是我推断的是准确的,但同样,我不确定。任何建议或意见都会很棒。 :)
我不知道这是否在正确的轨道上,所以我希望得到一些专业的批评。
import java.util.*;
public class threadtest1 extends Thread
{
int sum, sum2;
int N = 5;
int [] array = {1,3,2,4,5,6,7,8,9,10};
int [] temp = new int [N];
public static void main (String[] args)
{
threadtest1 run = new threadtest1();
run.go();
}
public void go()
{
threadtest1 t1 = new threadtest1();
threadtest1 t2 = new threadtest1();
threadtest1 t_Total = new threadtest1();
//To seperate and calculate the array by thread:
/**** FOR THREAD 1 ****/
t1.start();
temp = Arrays.copyOfRange(array, 1,5);
System.out.println("Temp : " + temp.length);
for (int j = 0; j < temp.length; j++)
{
//sum = temp.get(i);
sum += sum + j;
System.out.println("T1 : " + sum);
}
/**** FOR THREAD 2 ****/
t2.start();
temp = Arrays.copyOfRange(array, 6, 10);
for (int k = 0; k < temp.length; k++)
{
//sum = temp.get(i);
sum2 += sum2 + k;
System.out.println("T2 : " + sum2);
}
/**** FOR THREAD_TOTAL ****/
t_Total.start();
sum = sum + sum2;
System.out.println("T_Total: " + sum);
}
}
不,你根本没有走在正确的轨道上。当你启动一个线程时,它的 run()
方法被执行(在一个单独的线程中)。默认情况下,run()
方法什么都不做。而且您还没有覆盖此方法。因此,您启动了两个什么都不做的线程,并在主线程中对数组执行计算。
您应该重新阅读 Java concurrency tutorial。