毕向东讲解(摘)—7.多线程安全问题(同步函数的锁this验证)
来源:互联网 发布:淘宝上苹果促销代码 编辑:程序博客网 时间:2024/06/04 22:18
package day6;
/**
* 同步代码块和同步函数
* 对同步函数的锁是否为this的验证
*
* @authormzy
*
* 因为本身同步代码块我们传入的锁对象是当前对象this
* 只要同步函数的锁对象是this的话,那么我们的卖票程序最后的实现就是线程安全的
*
* 这里最后验证就是安全的。
*/
publicclassTest1{
publicstaticvoidmain(String[]args){
Tickettk=newTicket();
Threadt1=newThread(tk);
Threadt2=newThread(tk);
t1.start();
try{
Thread.sleep(1);//让主线程sleep 10ms
//这里必须抛出异常
}catch(Exceptione){
}
t2.start();
}
}
classTicketimplements Runnable{
privateintticket=100;
booleanflag=true;
publicvoidrun(){
if(flag){
while(true){
synchronized(this){//将当期对象作为synchronized的锁
if(ticket>0){
System.out.println("同步代码块"+Thread.currentThread().getName()+"卖出第"+ticket+"张票");
ticket--;
}
}
}
}else{
while(true){
show();
}
}
}
privatesynchronizedvoidshow(){
if(ticket>0){
System.out.println("同步函数"+Thread.currentThread().getName()+"卖出第"+ticket+"张票");
ticket--;
}
}
}
最后验证的结果得同步函数的锁就是this
- 毕向东讲解(摘)—7.多线程安全问题(同步函数的锁this验证)
- 毕向东讲解(摘)—6.多线程安全问题(同步函数)
- 毕向东讲解(摘)—5.多线程的安全问题(同步代码块)
- 毕向东讲解(摘)—8.静态同步函数
- 毕向东讲解(摘)—10.多线程(死锁)
- 毕向东讲解(摘)—1.多线程概述
- 多线程(四)——多线程安全问题之同步函数(This Lock )
- 黑马程序员------多线程(No.1)(概述、线程的创建、安全问题、同步锁、同步函数)
- 毕向东讲解(摘)—11.多线程线程间通信(示例代码)
- 多线程三,同步函数、静态同步函数和单例设计模式中懒汉式即延迟加载模式的多线程问题(毕向东老师)
- 毕向东讲解(摘)—线程售票重复bug
- 黑马程序员——java中关于同步函数(或同步代码块)解决多线程安全问题的加锁
- 验证多线程中同步函数锁是this对象
- java多线程㈡—线程安全问题(同步代码块or同步函数)
- 多线程二,有关同步的问题和例子(毕向东老师)
- 毕向东讲解(摘)—9.单例设计模式的回顾
- java多线程详解四 验证同步函数的锁是this
- JAVA之旅(十三)——线程的安全性,synchronized关键字,多线程同步代码块,同步函数,同步函数的锁是this
- 二级列表适配器
- Inspeckage使用笔记(app安全检测工具)
- JVM运行时数据区域简介
- angular数据绑定 {{}} 与后台模板语言冲突
- Ubuntu 下安装QT
- 毕向东讲解(摘)—7.多线程安全问题(同步函数的锁this验证)
- GKSceneRootNodeType
- windows:cmd codes
- SpringMVC架构的项目,js,css等静态文件导入有问题
- Sql语句大全
- kafka在zookeeper中存储结构
- 某天晚上要处理的800 张表的一个demo python小程序
- Response
- bzoj 2159: Crash 的文明世界