“Java同步方法”是指“线程”吗?

时间:2014-05-05 14:02:57

标签: java multithreading synchronized

我对同步方法感到困惑。就像那个线程,或者同步方法有不同于线程的特殊属性吗?我读了那个代码段,我认为同步的平均线程。有人可以用同步方法解释线程之间的区别吗?当然,如果他们有差异。

synchronized method = monitor:
    class Account {
        private double balance;
        public Account (double initialDeposit) {
            balance = initialDeposit;
        }
        public synchronized double getBalance() {
            return balance;
        }
        public synchronized void deposit(double amount) {
            balance += amount;
        }
        public synchronized void withdraw(double amount) {
            balance -= amount;
        }
        }

2 个答案:

答案 0 :(得分:3)

没有。同步是一种技术,用于解决与各种线程之间的通信相关的两个问题thread interferencememory consistency errors

在您仅提供一个主题的代码中,一次可以使用getBalance()withdraw()deposit()方法。

强烈建议您阅读:http://docs.oracle.com/javase/tutorial/essential/concurrency/index.html

答案 1 :(得分:1)

synchronized方法表示一种方法,用于输入哪个线程必须获取this对象的监视锁定,其中方法属于(例如方法),而.class对象用于{{1}方法。

static块实际上是相同的,除了您指定需要显式获取监视器的对象,您可以根据需要指定块边界;

synchronized(非常基本)是一系列指令,可以与其他线程并行执行;

所以你的问题的答案是否定的,同步方法主题是不同的,尽管这些概念经常在一起。