金融公司网站建设模板软件项目流程八个阶段

bicheng/2026/1/24 6:03:08/文章来源:
金融公司网站建设模板,软件项目流程八个阶段,婚礼网,扁平化色块风格的网站线程的安全问题与线程的同步机制 以火车站买票的问题来举例。假设火车站有100张票#xff0c;分三个窗口售卖这一百张票。 分别用继承Thread类和实现Runnable接口的方式#xff1a; 实现Runnable接口#xff1a; public class WindowTest {public static void main(Stri…线程的安全问题与线程的同步机制 以火车站买票的问题来举例。假设火车站有100张票分三个窗口售卖这一百张票。 分别用继承Thread类和实现Runnable接口的方式 实现Runnable接口 public class WindowTest {public static void main(String[] args){//线程的安全问题SaleTicket ss new SaleTicket();Thread t1 new Thread(ss,窗口一);Thread t2 new Thread(ss,窗口二);Thread t3 new Thread(ss,窗口三);t1.start();t2.start();t3.start();//这种情况下会出现重票错票的问题} } class SaleTicket implements Runnable {private int ticket 100;public int getTicket(){return ticket;}Overridepublic void run(){while(true){if(ticket 0){try{Thread.sleep(10);} catch (InterruptedException e){e.getStackTrace();}System.out.println(Thread.currentThread().getName() 卖出一张票票号为 ticket);ticket--;}else{break;}}} } 继承Thread类 public class WindowTest2 {public static void main(String[] args){//线程的安全问题Window w1 new Window(窗口一);Window w2 new Window(窗口二);Window w3 new Window(窗口三);w1.start();w2.start();w3.start();//同样会出现重票错票的问题} }class Window extends Thread {public Window(){}public Window(String name){super(name);}private static int ticket 100;Overridepublic void run(){while(true){if(ticket 0){try{Thread.sleep(10);} catch (InterruptedException e){e.getStackTrace();}System.out.println(Thread.currentThread().getName() 卖出一张票票号为 ticket);ticket--;}else{break;}}} } 分别运行可以发现两中方式卖票时都会出现重票错票的问题。 出现这种现象的原因 例如线程一窗口一操作ticket的过程中尚未结束的情况下其他的线程也参与进来对ticket进行操作。 要解决这种问题必须保证一个线程假设是线程一在操作ticket的过程中其他线程必须等待直到线程一操作ticket结束以后其他线程才可以进来继续操作ticket。 要解决线程的安全问题就要使用线程的同步机制。 方式一同步代码块 格式 synchronized(同步监视器{ //需要被同步的代码 //…… } 说明 ·需要被同步的代码即为操作共享数据的代码。 ·共享数据即多个线程都需要操作的数据。 ·需要被同步的代码在被synchronized包裹以后就使得一个线程在操作这些代码的过程中其他线程必须等待。 ·同步监视器俗称锁哪个线程获取了锁哪个线程就能执行需要被同步的代码。 ·同步监视器可以使用任何一个类的对象充当。多个线程这些线程要执行同一段需要被同步的代码必须共用同一个同步监视器。 同步监视器类似于交通信号灯多个线程共用同一个同步监视器即多个线程看同一个交通信号灯多个线程都是只有获取到这个锁之后才能执行相应需要被执行的代码 ·实现Runnable的方式创建线程的方式同步监视器使用this最方便继承Thread类的方式创建线程的方式使用  当前类名.class  最方便。 使用同步代码块后的卖票的代码如下 实现Runnable接口 public class WindowTest {public static void main(String[] args){//用同步代码块线程的安全问题SaleTicket ss new SaleTicket();Thread t1 new Thread(ss,窗口一);Thread t2 new Thread(ss,窗口二);Thread t3 new Thread(ss,窗口三);t1.start();t2.start();t3.start();//这种情况下会出现重票错票的问题} } class SaleTicket implements Runnable {private int ticket 100;//Object o new Object();public int getTicket(){return ticket;}Overridepublic void run(){while(true){try{Thread.sleep(10);} catch (InterruptedException e){e.getStackTrace();}//synchronized(o){//如果多个线程要使用同一段同步的代码同步监视器中的对象要保证这些线程使用同一个锁。synchronized(this)//同步监视器中可以放任何一个唯一对象只要保证唯一。一般情况下放this最方便。{if(ticket 0){try{Thread.sleep(10);//调用sleep代码只是为了更好的显示同步代码块时轮流买票的情况。} catch (InterruptedException e){e.getStackTrace();}System.out.println(Thread.currentThread().getName() 卖出一张票票号为 ticket);ticket--;}else{break;}}}} } 继承Thread类 public class WindowTest2 {public static void main(String[] args){//线程的安全问题Window w1 new Window(窗口一);Window w2 new Window(窗口二);Window w3 new Window(窗口三);w1.start();w2.start();w3.start();//同样会出现重票错票的问题} }class Window extends Thread {public Window(){}public Window(String name){super(name);}private static int ticket 100;//static Object oo new Object();Overridepublic void run(){while(true){//synchronized (this)//w1,w2,w3使用的并非同一个同步监视器相当于三个线程看的“交通信号灯”不是同一个。//synchronized (oo)synchronized (Window.class)//继承Thread类的方式同步监视器建议使用 当前类名.class{if(ticket 0){try{Thread.sleep(100);} catch (InterruptedException e){e.getStackTrace();}System.out.println(Thread.currentThread().getName() 卖出一张票票号为 ticket);ticket--;}else{break;}}}} } 方式二同步方法 如果操作共享数据的代码完整地声明在了一个方法中那么我们就可以将此方法声明为同步方法。在方法声明中加上synchronized ·非静态的同步方法默认同步监视器为this ·静态的同步方法默认同步监视器是  当前类名.class  。 具体代码如下 实现Runnable接口 public class WindowTest {public static void main(String[] args){//线程的安全问题//使用同步方法解决实现Runnable接口的方式的线程安全问题SaleTicket ss new SaleTicket();Thread t1 new Thread(ss,窗口一);Thread t2 new Thread(ss,窗口二);Thread t3 new Thread(ss,窗口三);t1.start();t2.start();t3.start();} } class SaleTicket implements Runnable {private int ticket 100;public int getTicket(){return ticket;}Overridepublic void run(){boolean b true;//判断ticket是否大于0while(b){show(b);}}public synchronized void show(boolean b)//此时的同步监视器是this{if(ticket 0){try{Thread.sleep(10);} catch (InterruptedException e){e.getStackTrace();}System.out.println(Thread.currentThread().getName() 卖出一张票票号为 ticket);ticket--;}else{b false;}} } 继承Thread类 public class WindowTest2 {public static void main(String[] args){//线程的安全问题Window w1 new Window(窗口一);Window w2 new Window(窗口二);Window w3 new Window(窗口三);w1.start();w2.start();w3.start();} }class Window extends Thread {public Window(){}public Window(String name){super(name);}private static int ticket 100;Overridepublic void run(){boolean b true;while(b){show(b);}}//public synchronized void show(boolean b)//同步监视器还是默认为this而this在这里三个不同的线程过来时分别指三个对象不能解决问题public static synchronized void show(boolean b)//此时同步监视器当前类名.class//注意不是使用静态的情况不要使用此方式应该继续使用同步代码块的方式{if(ticket 0){try{Thread.sleep(10);} catch (InterruptedException e){e.getStackTrace();}System.out.println(Thread.currentThread().getName() 卖出一张票票号为 ticket);ticket--;}else{b false;}} } synchronized关键字 好处解决了线程安全问题。 弊端在操作共享数据指多线程其实是串行执行的意味着性能低。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/87293.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络营销网站源码网站建设优化一年赚几十万

本身这个问题之前未找到很好的解决办法,本地请求Https请求URL时,一直没有问题,在线上服务器上时,总是出现javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure的问题, 1、开始以为双方的协…

国外做海报的网站免费杂志模板

zip4j解压zip时,出现中文乱码,看了下,zip4j解压时支持设置文件编码,我们只需要识别文件是不是utf-8编码,如果不是utf-8就使用gbk解压,但是这个判断没有100%准确的方式,我试过通过字节流的bom标记…

怎么做便民信息网站网页设计什么主题好

文章目录 前言引入1、链表定义及结构链表的分类3、单向不带头链表实现实现完整代码 4、带头双向循环链表实现实现完整代码 前言 引入 在上一篇文章中,我们认识了顺序表,但是在许多情况中,顺序表在处理一些事件时还存在许多问题,比…

如何使用电子商务网站东莞离莞最新规定

问题:一个div元素盒子 宽度固定 内容是中文到达盒子宽度放不下时会自动换行,但是如果输入的事纯数字或者字母 会发现内容区会溢出 异常现象:11111超出div盒子 解决方案:添加属性 word-break: break-all; 原理:浏览器…

珠海哪个公司做网站好二手东西网站怎么做

Apifox是一款功能强大的接口调试软件,其特色功能丰富,且在前端mock数据生成方面表现出色。以下是对Apifox软件特色功能的详解,以及如何进行前端mock数据生成的步骤: https://apifox.com/help/api-docs/exporting-api https://www…

ssh做的网站找郴州一家做网站的公司电话

软件开发过程中经常会用到配置文件,某些应用场景要求在软件运行时动态修改配置文件,此时就需要监控配置文件是否被修改,下面我们就来看看如何使用C实现这一功能吧 软件开发过程中经常会用到配置文件,某些应用场景要求在软件运行时动态修改配置文件,此时…

南昌网站建设哪家好薇软通动力和中软国际对比

我觉得做深度学习相关的开发,要深刻认识到自己的显卡资源有多少,以及对应能做一些什么研究 比如今天的我就对这部分认识不深,终归还是实践代码少~缺乏经验 我觉得之后要多跑代码,多跑工程项目啊。 我今天做了一件什么事情 我企…

家居网站建设精英网站加上视频对seo影响

在VC的函数参数中常出现WPARAM和LPARAM,这两个有什么特殊意义么?它们的含义是不是要事先定义? WPARAM和LPARAM一般在消息里面用的很多,其实没有特殊的含义的。 是两普通的变量 。 是怎样通过wParam,lParam传参数的呢?有时候表示点的坐标,有时表示…

网站建设以及seo做网站范本

在ArcGIS API for Android中,MapView通常只能设置一个OnTouchListener,这意味着你不能直接为同一个MapView对象多次调用setOnTouchListener方法,以添加多个不同的触摸监听器。 如果你需要多个不同的触摸监听器来处理不同类型的触摸事件,通常的做法是在一个OnTouchListener…

百度网站建设北京jquery 网站后台模板 仿

首次整理于 2019-07-27 22:04:00,现在整理发布在公众号申明原创。整理了一下大学期间2012年~2016年发布在QQ空间,自己感觉写得还行的七首“诗词”。回答知乎问题:你写过什么自认为惊艳的诗?中国古诗词博大精深。小时候…

做网站都用什么语言宿迁网站建设费用

在Linux系统中,有多种压缩和解压缩命令可供使用。以下是一些常用的压缩和解压缩命令的详细解释: 压缩命令 1. gzip 压缩文件: gzip file 这将压缩file并生成一个名为file.gz的压缩文件。 保留原始文件: gzip -c file > fil…

国家企业信用信息公示系统官网站index 石家庄网站建设

J2EE/EJB 论坛 / XForum 里用 Filter 编程实现安全访问控制cinc 2003.03.11, 15个回复, 1745次浏览在 J2ee 里,实现安全有两种: 用声明实现安全,就是在 web.xml 里实现安全限制。 用编程实现安全,自己写代码…

p2p网站建设制作公司部门工作总结

常用方法 文本分类:如情感分析、主题标签分类。使用方法如朴素贝叶斯、支持向量机、神经网络等。信息提取:从文本中提取结构化信息,如命名实体识别(NER)、关系提取。语义分析:理解文本的含义,包…

想用wordpress建立网站wordpress 灯鹭

word 2010宏已被禁用警告关闭方法 Word2010宏已被禁用警告关闭方法:在「信任中心设置」选项的宏设置中选择「禁用所有宏,并且不通知」即可。 每次打开Word 2010,都会提示「完全警告:宏已被禁用」提示。自从Word 2010安装完毕&am…

如何做网站图片想在网上做外卖 上什么网站好

目录 2024美赛数学建模各题思路模型代码:开赛后第一时间更新,更新见文末 一、2023题目重述 拟解决的问题 我们的工作: 二、模型和计算 1.数据预处理 2.报告数量区间预测模型 3.猜词结果分布预测模型 2024美赛数学建模交流&#xff0…

松江建设投资有限公司网站东莞住建局电话是多少

一、交易时间: 交易日的上午9:30-11:30,下午13:00-15:00,其中9:15-9:25是开盘价公布以及竞价的时间,15:05-15:30是盘后固定价格交易时间。 二、买卖原则: 科创板实行T1交易,按照市场实时价格…

濮阳网站建设电话wordpress无插件主题

使用chrome浏览器用百度浏览时,一直弹百度安全验证: 在设置里进行重置: 然后重启浏览器就可以了。

网站建设知识点spark网站开发

中国地图使用心得 注册地图是注册在echarts对象上而非 自己构建的echarts dom上、。 请求本地json文件 ​ vue项目的public打包时不会动,所以线上和本地地址直接指向了public同级目录,请求时直接相对路径 绘制中国地图时,如何在各个省会地方…

基于php的网站开发流程专业设计app

我们在本地的oracle上或者virtualbox的oracle上 创建新的数据库表空间操作:通过system账号来创建并授权/*--创建表空间create tablespace YUJKDATAdatafile c:\yujkdata200.dbf --指定表空间对应的datafile文件的具体的路径size 100mautoextend onnext 10m*/ /*--创…

a站为什么不火了食品类网站模板

快照器管理容器文件系统的快照。 可通过运行 ctr plugins ls 或 nerdctl info 查看可用的快照器。 核心快照器插件 通用: overlayfs(默认): OverlayFS. 该驱动程序类似于 Docker/Moby 的 "overlay2 "存储驱动程序&a…