方法传递参数在多线程环境中的行为方式

时间:2014-03-19 14:47:03

标签: java multithreading

根据定义,局部变量是在方法中声明的变量。多个线程将它们保存在自己的堆栈中。我需要了解如何在多线程环境中传递Method参数。 ?

例如 - 假设User是一个实例变量并传递给它的本地同步方法。

public static synchronized registerUser(User user,int count){}

public synchronized registerUser(User user,int count){}

在上面的例子中,我传递了一个Object和原语。

  1. 传递参数如何在具有多个线程的静态方法中进行管理? (对象,图元)

  2. 传递参数如何在具有多个线程的非静态方法中进行管理? (对象,原语)?

  3. 3.活动线程总是获取它执行的方法锁。由于User对象引用在synchronized上下文中工作,该引用是否可供其他线程在解锁方法中使用?

1 个答案:

答案 0 :(得分:0)

静态方法锁定类,而成员方法锁定对象。

Java使用pass-by-value,在原语的情况下是值,在对象的情况下是对象的引用。

在你的方法中:

  • user上没有锁定,在调用synchronized方法时,可以通过对其的不同引用修改另一个线程。
  • 无法修改原始count的值,以便在调用任何方法后该方法都会看到修改。