son*_*mar 10 java performance multithreading
我有以下java程序添加两个数字..但我试图通过线程开发..我看起来在开始时应该有五个不同的线程名为T1,T2,T3,T4,T5和所有五个线程应该同时调用add方法,请告诉我如何实现这一点,所有五个线程应该同时调用add方法,这样可以提高性能.
有人可以建议我如何通过执行程序框架或contdown锁存器实现这一点
public class CollectionTest {
public static void main(String args[]) {
//create Scanner instance to get input from User
Scanner scanner = new Scanner(System.in);
System.err.println("Please enter first number to add : ");
int number = scanner.nextInt();
System.out.println("Enter second number to add :");
int num = scanner.nextInt();
//adding two numbers in Java by calling method
int result = add(number, num);
System.out.printf(" Addition of numbers %d and %d is %d %n", number, num, result);
}
public static int add(int number, int num){
return number + num;
}
}
Run Code Online (Sandbox Code Playgroud)
Num*_*ron 15
您的所有线程都可以同时调用add而不会产生任何后果.
这是因为在方法内部,number和num变量只是该方法的本地变量 - 也是调用者线程的本地变量.如果数字和/或数字是全球的,那将是一个不同的故事.
编辑:
例如,在这种情况下:
public static int add(int number, int num){
//A
return number + num;
}
Run Code Online (Sandbox Code Playgroud)
当一个线程到达A点时,它有两个传入的数字.
当一个不同的线程到达A点时,它调用了自己的方法版本,并且传入了自己不同的数字.这意味着它们对第一个线程的作用没有任何影响.
这些数字仅适用于该方法.
在这种情况下:
static int number;
public static int add(int num){
//A
return number + num;
}
Run Code Online (Sandbox Code Playgroud)
当一个线程到达A点时,它传入了num,并且它有外部号码,因为外部号码可以访问所有号码.如果另一个线程进入该方法,它将拥有自己的num(因为它调用了自己的方法版本),但它将使用相同的外部数字,因为该数字是全局的并且可以访问所有数字.
在这种情况下,您需要添加特殊代码以确保线程正常运行.
| 归档时间: |
|
| 查看次数: |
16782 次 |
| 最近记录: |