synchronized同步函数
来源:互联网 发布:迅雷看看有mac版吗 编辑:程序博客网 时间:2024/06/08 06:04
java线程同步机制的方式:
方式二:同步函数就是synchronized修饰一个函数
同步函数需要注意的事项:
1.非静态的同步函数的锁对象是this对象,静态的同步函数的锁对象是当前函数所属的类的字节码文件(class对象)
2.同步函数的 锁对象是固定的,不能由你来指定。
推荐使用:同步代码块
原因:1.同步代码块的锁对象可以由我们随意指定,方便控制。同步函数的锁对象是固定的,不能由我们来指定。
2.同步代码块可以很方便的控制需要被同步代码的范围,同步函数必须是整个函数的所有的代码都被同步了。
package com.cn.thread;
/**
* Author:Liu Zhiyong
* Version:Version_1
* Date:2016年7月5日12:30:36
* Desc:方式二:同步函数
*
* 同步函数需要注意的事项:
* 1.如果一个非静态的同步函数的锁对象是this对象,如果是静态的同步函数的锁对象是当前函数所属的类的字节码文件(class对象)
* 2.同步函数的 锁对象是固定的,不能由你来指定。
*
* 推荐使用:同步代码块
* 原因:1.同步代码块的锁对象可以由我们随意指定,方便控制。同步函数的锁对象是固定的,不能由我们来指定。
* 2.同步代码块可以很方便的控制需要被同步代码的范围,同步函数必须是整个函数的所有的代码都被同步了。
*/
class BankThread extends Thread{
static int allMoney = 5000;//银行总共的钱
public BankThread(String name) {
super(name);
}
@Override
public void run() {
getMoney();
//while(true){
////synchronized("锁"){
//if(allMoney > 0){
//BankThread.allMoney -= 1000;
//System.out.println(BankThread.currentThread().getName() + "取了" + 1000 + ",还剩" + allMoney);
//}else{
//System.out.println("钱取光了。。。");
//break;
//}
////}
//}
////需要执行的代码
////需要执行的代码
////需要执行的代码
////需要执行的代码
////需要执行的代码
////需要执行的代码
////需要执行的代码
////需要执行的代码
}
//静态的函数。。函数所属的类的字节码文件对象(BankThread.class),锁对象是唯一的。
public static synchronized void getMoney(){
while(true){
//synchronized("锁"){
if(allMoney > 0){
BankThread.allMoney -= 1000;
System.out.println(BankThread.currentThread().getName() + "取了" + 1000 + ",还剩" + allMoney);
}else{
System.out.println("钱取光了。。。");
break;
}
//}
}
}
}
public class Demo6 {
public static void main(String[] args) {
BankThread h = new BankThread("丈夫");
h.start();
BankThread w = new BankThread("妻子");
w.start();
}
}
0 0
- synchronized同步函数
- Java---14---多线程---synchronized 同步函数
- 同步-synchronized
- synchronized同步
- 同步synchronized
- synchronized同步
- synchronized同步
- java个人学习笔记17(synchronized+同步函数+同步代码块+死锁)
- java---synchronized同步机制
- synchronized多线程同步
- synchronized(同步)形象化
- 线程同步---synchronized
- Java同步机制--synchronized
- Java同步: synchronized用法
- 同步synchronized的问题
- Java synchronized同步机制
- synchronized同步锁详解
- 使用synchronized同步
- String、StringBuffer与StringBuilder之间区别
- mac android studio 配置 gradle
- 算法笔记_070-BellmanFord算法简单介绍(Java)
- uboot下init_sequence_f函数之jump_to_copy
- 程序猿的35岁悖论:这是一碗“青春饭”,迟早要转行?
- synchronized同步函数
- 解析property文件
- FishC笔记—23,24 讲 递归:这帮小兔崽子,汉诺塔
- Android——动态广播实例
- hbase命令
- 死锁
- Vue.js学习系列(十九)--常用指令(二)
- 【知识点】大数分解与素数判定 --- 【Miller-rabin算法】【pollard-rho算法】
- VM虚拟机下安装Centos7.0图文教程