同步函数解决线程安全
来源:互联网 发布:苹果mac 怎样更新系统 编辑:程序博客网 时间:2024/06/05 07:22
需求:
一个银行账户5000元,夫妻二人一人拿着存折,一人拿着卡,每次只能取1000块。
class BankThread extends Thread{static int count =5000;public BankThread(String name){super(name);}@Overridepublic synchronized void run(){while(true){if(count>0){System.out.println(Thread.currentThread().getName()+"取走了1000块,还剩"+(count-1000)+"元");count=count-1000;}else{System.out.println("取光了……");break;}}}}public class Demo{public static void main(String[] args){//创建两个线程对象BankThread thread1=new BankThread("老公");BankThread thread2=new BankThread("老婆");//调用start方法开启线程去栈thread1.start();thread2.start();}}
同步函数要注意的事项:
1、如果是一个非静态的同步函数的锁对象是this对象,如果是静态的同步函数的锁对象是当前函数所属的类的字节码文件(class对象)
2、同步函数的锁对象是固定的,不能指定
推荐使用同步代码块,原因如下:
1、同步代码块的锁对象是可以由程序员指定的,同步函数的锁对象是固定的。
2、同步代码块可以很方便控制需要同步代码的范围,同步函数必须是整个函数的所有代码都被同步。
阅读全文
0 0
- 同步函数解决线程安全
- 同步代码块解决线程安全
- 线程同步&线程安全
- 线程安全&线程同步
- java线程安全之同步函数和同步代码块
- javaseday12(线程,同步代码块 函数,线程安全,死锁)
- Java线程同步锁解决共享数据安全
- 安全的线程同步
- 安全的线程同步
- 安全的线程同步
- 安全的线程同步
- 安全的线程同步
- 安全的线程同步
- synchronized 线程同步安全
- 线程安全同步问题
- 线程同步和安全
- 线程同步和线程安全
- 线程同步和线程安全
- 2017 CCPC Partial Sum 前缀和
- 最大整数——解题报告
- STL 全排列(123,132......)
- jdbc基本知识(一)
- 2017 Multi-University Training Contest
- 同步函数解决线程安全
- Android开发之OnSaveInstanceState和onRestoreInstance详解
- python_爬虫今日头条
- 编程实战
- jenkins+SonarQube
- Servicemix配置文件的配置
- 方块消除游戏(完美世界2017秋招真题)
- Oracle笔记简单查询、限定查询、数据的排序
- 如何实现应用程序二进制补丁(冷补丁、热补丁、冷转热补丁)