java - 不同对象、不同线程上的同步方法

标签 java multithreading

这是我的银行类,具有同步的存款和取款方法。

public class BankAccount {

private float blance;

public synchronized void deposit(float amount) {
    blance += amount;
}

public synchronized void withdraw(float amount) {
    blance -= amount;
  }
}

以下哪一项是正确的:

1:在该类的多个对象中,deposite()方法可以与withdraw()方法同时运行。

2:在此类的一个实例(对象)中,deposite() 方法可以同时在我的两个线程中运行。(并考虑将其用于 withraw() 通过其本身的方法)。

是否同步以防止在多个对象或多个线程中同时运行方法?

最佳答案

将非静态方法声明为同步意味着代码将在对象实例本身上同步。实际上,写作:

public synchronized void doStuff()
{
    whatever();
}

相当于:

public void doStuff()
{
    synchronized(this) {
        whatever();
    }
}

Google 搜索“Java 并发实践”。并购买这本书。

关于java - 不同对象、不同线程上的同步方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21802025/

相关文章:

java - 从批处理文件中终止从 Java 启动的进程

java - DBCP 数据库连接未关闭

java - 在 Java 中使用 10 个线程打印 1 到 100

android - 访问由服务启动的线程

java - 线程(在类中)和 Activity 之间的 Android 消息传递

java - web.xml 中的 resource-ref 标签是什么意思?

java - 禁用 JShell 历史记录

java - 无法打开 Hibernate Session 进行交易;嵌套异常是 org.hibernate.exception.JDBCConnectionException : Could not open connection

c - 有信号和无信号的事件状态

swift - 在OperationQueue中打印1到10不打印整数