java多线程同步方法,同步代码块,实例展示

BSO 2020-10-29 16:11:03 java常见问答 3356

java中的知识涉及的范围是十分广阔的,而且它的知识点也是比较复杂的。今天就来为大家介绍一下,java多线程同步方法,同步代码块的实例展示,一起来看看吧。

首先是,同步方法

synchronized关键字修饰方法。 由于java的每个对象都有一个内置锁,当用此关键字修饰方法时,内置锁会保护整个方法。在调用该方法前,需要获得内置锁,否则就处于阻塞状态。代码展示如下:

public class Bank
{
    private int count = 0; // 账户余额
    // 存钱
    public synchronized void addMoney(int money)
    {
        count += money;
        System.out.println(System.currentTimeMillis() + "存进:" + money);
    }
    // 取钱
    public synchronized void subMoney(int money)
    {
        if (count - money < 0)
        {
            System.out.println("余额不足");
            return;
        }
        count -= money;
        System.out.println(+System.currentTimeMillis() + "取出:" + money);
    }
    // 查询
    public void lookMoney()
    {
        System.out.println("账户余额:" + count);
    }
}

同步代码块,

用synchronized关键字修饰语句块。被该关键字修饰的语句块会自动被加上内置锁,从而实现同步,代码展示如下:

public class Bank
{
    private int count = 0; // 账户余额
    // 存钱
    public void addMoney(int money)
    {
        synchronized(this)
        {
            count += money;
        }
        System.out.println(System.currentTimeMillis() + "存进:" + money);
    }
    // 取钱
    public void subMoney(int money)
    {
        synchronized(this)
        {
            if (count - money < 0)
            {
                System.out.println("余额不足");
                return;
            }
            count -= money;
        }
        System.out.println(+System.currentTimeMillis() + "取出:" + money);
    }
    // 查询
    public void lookMoney()
    {
        System.out.println("账户余额:" + count);
    }
}

需要注意的是,同步是一种高开销的操作,因此应该尽量减少同步的内容。通常没有必要同步整个方法,使用synchronized代码块同步关键代码即可。

以上就是关于java多线程同步方法,同步代码块的实例展示的主要内容了。如果你对java知识感兴趣,想要了解更多java实例,敬请关注奇Q工具网。

推荐阅读:

java多线程编程书哪本比较好?

java多线程编程详解

java多线程编程题代码解析