同步线程的一个实例

来源:互联网 发布:长时间录屏软件 编辑:程序博客网 时间:2024/09/21 09:20
package com.demo.thread;/** * 存钱线程 * @author zl * */public class SaveThread extends Thread{    private BankBook bankBook;    private double saveMomey;    @Override    public void run() {        saveSomeMomey(saveMomey);    }    public SaveThread(String name,double momey,BankBook bb) {        super(name);        this.saveMomey = momey;        this.bankBook = bb;    }    /**     * 存钱     * @param someMomey     */    public synchronized  void saveSomeMomey(double someMomey){        System.out.println("查询的账户余额为"+bankBook.getTotalMomey()+","+Thread.currentThread().getName()+"开始存钱");        bankBook.setTotalMomey(bankBook.getTotalMomey()+someMomey);        System.out.println(Thread.currentThread().getName()+"成功存钱"+someMomey+"元,目前账户余额为"+bankBook.getTotalMomey());    }}class BankBook {    private double totalMomey;    public BankBook(double momey) {        this.totalMomey = momey;    }    public double getTotalMomey() {        return totalMomey;    }    public void setTotalMomey(double totalMomey) {        this.totalMomey = totalMomey;    }}
package com.demo.thread;/** 1. 同步线程的测试 2. @author zl 3.  */public class SynchronizedThreadTest {    public static void main(String[] args) {        BankBook bb = new BankBook(500);        SaveThread s1 = new SaveThread("妈妈", 200.00,bb);        SaveThread s2 = new SaveThread("爸爸", 100.00,bb);        SaveThread s3 = new SaveThread("儿子", 300.00,bb);        SaveThread s4 = new SaveThread("女儿", 400.00,bb);        s1.start();        s2.start();        s3.start();        s4.start();    }}

测试结果为:
这里写图片描述

去掉关键字synchronized 后的测试结果为:
这里写图片描述

0 0
原创粉丝点击