首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

关于JAVA 中volatile使用的一些笔记

写在前面 ---- 我的需求: CSDN看到一个小伙伴问了这样JAVA并发的问题,然后我做了解答,主要使用了volatile (1)某电影放映厅一共有10排,每排10个座位座位号为“排号+列号”,如第...8排,座位号是8A-8J; (2)此放映厅某一场次现有100张票要卖出,观众可以通过四个渠道购票:电影院、时光网、美团和支付宝; (3)各个售票点的效率不同,每卖出一张票,各个售票点所需要的时间分别为:...要求打印出每个售票点所卖出电影票的座位号,座位号随机确定。 我需要解决的问题: 答完之后他反馈有问题,我测了几次,发现确实有问题。...使用 volatile,需要保证: 对变量的操作不依赖于当前值; 该变量没有包含在具有其他变量的不变式中 关于volatile的一些基本概念 volatile关键字只能修饰类变量和实例变量,对于方法参数...关键字修饰时,对于共享资源的读操作会直接在主内存中进行(当然也会缓存到工作内存中,当其他线程对该共享资源进行了修改,则会导致当前线程在工作内存中的共享资源失效,所以必须从主内存中再次获取),对于共享资源的操作当然是先要修改工作内存

26430

看个电影就能学会类的加载过程?我不信!

,依次的进入到电影院。...图片1.2> 过程分析当我们通过编写java源码然后将其编译为class文件的时候,需要JVM将class文件加载进来才能执行我们所编写的程序逻辑,就正如上面故事所述的——“大家依次的进入到电影院”中。...并且,创建java.lang.Class类的实例对象,用来表示该类型。...四、解析阶段4.1> 故事描述领完3D眼镜,大家终于进入了电影院,根据电影票中的x号厅x排x座,来寻找实际的座位,大家陆陆续续的都坐到了自己的座位上。...符号引用指的是描述性的引用关系,比如上面故事中的“电影票中的x号厅x排x座”,它只进行了座位的描述,并不是实实在在的座位;直接引用则对应真正的引用关系,即上面故事中电影票所对应的真实的座位;这一点,我们可以通过

20040
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    看个电影就能学会类的加载过程?我不信!

    ,依次的进入到电影院。...1.2> 过程分析 当我们通过编写java源码然后将其编译为class文件的时候,需要JVM将class文件加载进来才能执行我们所编写的程序逻辑,就正如上面故事所述的——“大家依次的进入到电影院”中。...并且,创建java.lang.Class类的实例对象,用来表示该类型。...四、解析阶段 4.1> 故事描述 领完3D眼镜,大家终于进入了电影院,根据电影票中的x号厅x排x座,来寻找实际的座位,大家陆陆续续的都坐到了自己的座位上。...符号引用指的是描述性的引用关系,比如上面故事中的“电影票中的x号厅x排x座”,它只进行了座位的描述,并不是实实在在的座位; 直接引用则对应真正的引用关系,即上面故事中电影票所对应的真实的座位; 这一点

    12030

    【leetcode两题选手】MySQL类题目(八)

    题一:有趣的电影 某城市开了一家新的电影院,吸引了很多人过来看电影。该电影院特别注意用户体验,专门有个 LED显示板做电影推荐,上面公布着影评和相关电影描述。...作为该电影院的信息部主管,您需要编写一个 SQL查询,找出所有影片描述为非 boring (不无聊) 的并且 id 为奇数 的影片,结果请按等级 rating 排列。...='boring' order by rating desc; 题二:换座位 小美是一所中学的信息科技老师,她有一张 seat 座位表,平时用来储存学生名字和与他们相对应的座位 id。...其中纵列的 id 是连续递增的,小美想改变相邻俩学生的座位。 你能不能帮她一个 SQL query 来输出小美想要的结果呢?...对于所有座位 id 是偶数的学生,修改其 id 为 id-1。 首先查询座位的数量。

    34120

    系统设计:在线售票系统

    2.一旦用户选择城市,服务应显示该特定城市发布的电影城市 3.一旦用户选择了一部电影,该服务应显示运行该电影的电影院及其可用的演出时间。 4.用户应该能够在特定电影院选择一场演出并预订门票。...5.服务应能向用户展示电影院大厅的座位安排。这个用户应该能够根据自己的喜好选择多个座位。 6.用户应该能够区分可用座位和预定座位。 7.用户应该能够在向用户付款之前,在座位上停留五分钟完成预订。...存储量估算: 假设我们有500个城市,平均每个城市有10家电影院。如果每家电影院有2000个座位,平均每天有两场演出。...我们还需要存储关于电影和电影院的信息;假设需要50字节。...这里要注意一件事;在一个事务中,如果我们读取行,就会得到一个锁 这样他们就不会被其他人更新。一旦上述数据库事务成功,我们就可以在ActiveReservationService。

    6.5K120

    Java】线程安全

    我们通过一个案例,演示线程的安全问题: 电影院要卖票,我们模拟电影院的卖票过程。...假设要播放的电影是 “ 葫芦娃大战奥特曼 ” ,本次电影的座位共 100 个 ( 本场电影只能卖 100 张票 ) 。...若每个线程中对全局变量、静态变量只有读操作,而无 操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行操作,一般都需要考虑线程同步, 否则的话就可能影响线程安全。...2.2 线程同步 当我们使用多个线程访问同一资源的时候,且多个线程中对资源有的操作,就容易出现线程安全问题。...要解决上述多线程并发访问一个资源的安全性问题 : 也就是解决重复票与不存在票问题, Java 中提供了同步机制 ( synchronized ) 来解决。

    39020

    并发编程如何使用锁保护多个资源

    保护没有关联关系的多个资源 在现实生活中,球场的座位电影院座位是没有关联的,这种场景非常容易解决,那就是球场有球场的门票,电影院有电影的门票 同样,在编程的世界里,也是同样的原理,比如,银行业务的针对账户余额的取款操作...this这把锁,问题就出现在this,this只能保护自己的月this.balance,却保护不了别人的余额target.balance,就像你用自己家的锁去保护别人家的锁,也不能用自己的票来保护别人的座位一样...300元 我们使用的两个线程,不同的CPU,这样是不能达到互斥的,因为线程1锁定的是账户A,而线程2锁定的是账户B,所以这两个线程同时进入临界区transfer,就有可能是300(线程1后于线程2,线程2的余额值会被覆盖...)也有可能是100(线程1先于线程2,线程1的余额值会被覆盖),但是就是没有200. ?...我们是无法保证构造函数传入的是同一个锁,因为创建Account对象的代码可能分散到多个工程,传入共享lock真的很难.上面的可行性是不行的,那么我们有没有更好的方案呢,当时是有的,就是使用Account.class,而且这个对象是java

    97430

    JDK1.9-线程安全

    我们通过一个案例,演示线程的安全问题: 电影院要卖票,我们模拟电影院的卖票过程。假设要播放的电影是 “葫芦娃大战奥特曼”,本次电影的座位共100个 (本场电影只能卖100张票)。...若每个线程中对全局变量、静态变量只有读操作,而无 操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行操作,一般都需要考虑线程同步, 否则的话就可能影响线程安全。...2.2 线程同步 当我们使用多个线程访问同一资源的时候,且多个线程中对资源有的操作,就容易出现线程安全问题。...要解决上述多线程并发访问一个资源的安全性问题:也就是解决重复票与不存在票问题,Java中提供了同步机制 (synchronized)来解决。...为了保证每个线程都能正常执行原子操作,Java引入了线程同步机制。 那么怎么去使用呢? 有三种方式完成同步操作: 同步代码块。 同步方法。 锁机制。

    31510

    看了这个有趣的例子,你就秒懂多线程同步了

    电影票的案例 单线程的例子 我们设定有一个电影院,该电影院开张不久,在入口的旁边只设立了一个售票点A,顾客看电影,需要在售票点排队依次买票,买完票后在入口处检票进入电影院观影。 ?..." + customerId + ", ticket=" + ticket.toString() + '}'; } } 3、最后一个主程序...从单线程转向多线程 一切井然有序,程序也运行得很好,那我们继续往 下看,由于观影顾客人数的增加,电影院对放映厅做了改造:1、增加座位;2、增设两个卖票窗口。...那进了电影院顾客肯定得投诉。 ?...,当且仅当同一时刻只有售票点A才能访问这个座位对应的电影票,也就是所谓的不能一票多卖。

    62010

    手机Java

    手机怎么java通常我们java程序都是在电脑上,很少在手机上程序,因为手机屏幕小,写起来不方便,而且ide也没有电脑的好用。...但手机相对来说比较便捷,随时随地就可以代码,练练手,下面就介绍一下如何在手机上java程序吧。...手机怎么java 通常我们java程序都是在电脑上,很少在手机上程序,因为手机屏幕小,写起来不方便,而且ide也没有电脑的好用。...但手机相对来说比较便捷,随时随地就可以代码,练练手,下面就介绍一下如何在手机上java程序吧。...2)我们点击 InOut.java ,编写具体代码,这里就以最简单的栗子来讲,即输出 Hello Java。 运行程序 (点击三角形图标即可)

    1.5K20

    Android实现电影院选座效果

    本文实例为大家分享了Android实现电影院选座效果展示的具体代码,供大家参考,具体内容如下 ?...这是一个简单的电影院选座效果,实现该效果大致分为三步: 1.自定义view进行绘制; 2.手势缩放效果的实现; 3.手势触摸被选和未被选效果的实现; 先来看第一步,效果的绘制; public class...int row; //列数 private int column; //可选座位的图片 private Bitmap seatBitmap; //选中时座位的图片 private Bitmap...public ArrayList<Point list; /** * 默认的座位图片的宽度,如果使用的自己的座位的图片比这个尺寸大或者小,会缩放到这个大小 */ private float...int column) { this.row = row; this.column = column; init(); invalidate(); } 源码地址:Android实现电影院选座效果

    1.7K20

    分享 | C#编写的电影售票系统(附源码+数据库)

    我们做的是一个有会员制的电影院购票系统。具有会员注册功能,可区分会员和散客两种身份,实现会员及折扣管理。购票具有挑选电影场次,选择座位和查看电影信息等功能: 》查看电影详情、获取排片信息。...02 设计思路 在功能设计上,一个电影院购票系统,首先需要具备最基础的功能:影片选择、场次选择和座位选择。 在用户提交选择后,需要支付模块提示用户付款并完成出票。...最后,作为主要部分的座位选择栏简介明了,座位之间间隔明显,有效的防止用户错误操作。...》购票信息确认界面 在选定座位后,进行系统进行核算总的金额,然后显示所选座位信息以及应付的价钱。提示用户是否进行付款。...Hall表:保存每个影厅的信息,包括一行的座位数和一列的座位数。 ? Movie表:保存电影的信息,电影名,类型,演员等。 ? Schedule表:保存电影院的排片信息,包括价格,放映时间等。 ?

    4.7K82
    领券