可以在不同的线程中同时执行同一对象的相同方法吗?

时间:2014-03-08 11:07:31

标签: java multithreading reflection aop aspectj

搜索解决方案以确定具体的方法执行情况。不明白方法的名称,但是方法的具体的执行。例如,如果在同一方法的同一对象上同时在两个线程中进行递归调用,则可能。

1 个答案:

答案 0 :(得分:0)

可以同时从不同的线程调用静态方法以及实例的方法。

虽然你应该处理竞争条件以及访问和修改对象所引起的一般问题,这些问题在这些线程之间共享(如果两个线程使用相同的类实例,通常所有静态对象以及实例成员)< / p>

使用以下代码可以同步对共享对象的访问权限:

public class Calculator {
    private int c;

    public void increment() {
        synchronized(c) {
            c++;
        }
    }
}

更多信息:http://docs.oracle.com/javase/tutorial/essential/concurrency/locksync.html

使用以下代码可以同步对共享方法的访问权限:

public synchronized void increment() {
        c++;
    }

更多信息:http://docs.oracle.com/javase/tutorial/essential/concurrency/syncmeth.html

更高级的东西,可以让你达到更好的性能ReadWriteLock,但你现在不需要它。