我对同步方法感到困惑。就像那个线程,或者同步方法有不同于线程的特殊属性吗?我读了那个代码段,我认为同步的平均线程。有人可以用同步方法解释线程之间的区别吗?当然,如果他们有差异。
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;
}
}
答案 0 :(得分:3)
没有。同步是一种技术,用于解决与各种线程之间的通信相关的两个问题thread interference
和memory consistency errors
。
在您仅提供一个主题的代码中,一次可以使用getBalance()
,withdraw()
和deposit()
方法。
强烈建议您阅读:http://docs.oracle.com/javase/tutorial/essential/concurrency/index.html
答案 1 :(得分:1)
synchronized
方法表示一种方法,用于输入哪个线程必须获取this
对象的监视锁定,其中方法属于(例如方法),而.class
对象用于{{1}方法。
static
块实际上是相同的,除了您指定需要显式获取监视器的对象,您可以根据需要指定块边界;
synchronized
(非常基本)是一系列指令,可以与其他线程并行执行;
所以你的问题的答案是否定的,同步方法和主题是不同的,尽管这些概念经常在一起。