当前位置: 首页 > news >正文

北京市网站开发/关键词app

北京市网站开发,关键词app,如何做一个个人网站,lpl赛区战绩用于解决多线程安全问题的方式: 1. 同步代码块 (隐式锁) 2. 同步方法(隐式锁) 3. 同步锁 Lock( jdk 1.5 后) 注意:是一个显示锁,需要通过 lock() 方法上锁,必须通过 unlock() 方法进行释放锁 下面举一个售票例子: 1…

用于解决多线程安全问题的方式:
1. 同步代码块 (隐式锁)
2. 同步方法(隐式锁)
3. 同步锁 Lock( jdk 1.5 后)
 注意:是一个显示锁,需要通过 lock() 方法上锁,必须通过 unlock() 方法进行释放锁

下面举一个售票例子:

1)同步代码块

package com.lxj.juc;public class TestSync {public static void main(String[] args) {Ticket ticket = new Ticket();new Thread(ticket).start();new Thread(ticket).start();new Thread(ticket).start();}}
class Ticket implements Runnable{private int ticket = 100;@Overridepublic void run() {while(true) {synchronized(this) {  //this代表对当前对象上锁if(ticket > 0) {try {Thread.sleep(200);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName()+" : 购票成功,余票为:" +  --ticket );}else {break;}}}}}
运行结果:
Thread-0 : 购票成功,余票为:99
Thread-0 : 购票成功,余票为:98
Thread-2 : 购票成功,余票为:97
.....
Thread-2 : 购票成功,余票为:7
Thread-0 : 购票成功,余票为:6
Thread-0 : 购票成功,余票为:5
Thread-1 : 购票成功,余票为:4
Thread-1 : 购票成功,余票为:3
Thread-0 : 购票成功,余票为:2
Thread-0 : 购票成功,余票为:1
Thread-2 : 购票成功,余票为:0

2)同步方法

package com.lxj.juc;public class TestSync {public static void main(String[] args) {Ticket ticket = new Ticket();new Thread(ticket).start();new Thread(ticket).start();new Thread(ticket).start();}}class Ticket implements Runnable {private int ticket = 100;@Overridepublic void run() {while (true) {if (ticket > 0) {int i = purchase();if(i == 0) {break;}}else {break;}}}private synchronized int purchase() {if (ticket > 0) {try {Thread.sleep(200);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName() + " : 购票成功,余票为:" + --ticket);}else {return 0;}return 1;}}
运行结果:
Thread-0 : 购票成功,余票为:99
Thread-0 : 购票成功,余票为:98
Thread-0 : 购票成功,余票为:97
Thread-2 : 购票成功,余票为:96
Thread-1 : 购票成功,余票为:95
....
Thread-1 : 购票成功,余票为:8
Thread-2 : 购票成功,余票为:7
Thread-2 : 购票成功,余票为:6
Thread-0 : 购票成功,余票为:5
Thread-0 : 购票成功,余票为:4
Thread-0 : 购票成功,余票为:3
Thread-2 : 购票成功,余票为:2
Thread-1 : 购票成功,余票为:1
Thread-2 : 购票成功,余票为:0


3)同步锁lock

package com.lxj.juc;import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;public class TestSync {public static void main(String[] args) {Ticket ticket = new Ticket();new Thread(ticket).start();new Thread(ticket).start();new Thread(ticket).start();}}class Ticket implements Runnable {private int ticket = 100;private Lock lock = new ReentrantLock();@Overridepublic void run() {while (true) {lock.lock(); //上锁try {if (ticket > 0) {try {Thread.sleep(200);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName() + " : 购票成功,余票为:" + --ticket);}else {break;}} finally {lock.unlock(); //解锁}}}}
运行结果:
Thread-0 : 购票成功,余票为:99
Thread-1 : 购票成功,余票为:98
Thread-1 : 购票成功,余票为:97
Thread-1 : 购票成功,余票为:96
Thread-1 : 购票成功,余票为:95
Thread-2 : 购票成功,余票为:94
......
Thread-0 : 购票成功,余票为:6
Thread-0 : 购票成功,余票为:5
Thread-1 : 购票成功,余票为:4
Thread-2 : 购票成功,余票为:3
Thread-2 : 购票成功,余票为:2
Thread-2 : 购票成功,余票为:1
Thread-2 : 购票成功,余票为:0

注意使用同步锁一定要记得关闭锁,放在try{}finally{}中。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

http://www.lbrq.cn/news/1327429.html

相关文章:

  • 美国纽约网站建设费用/网站热度查询
  • 网站赚取广告费/徐州seo顾问
  • ssm框架做电影网站/农业推广
  • 美工首页设计/宁波优化推广选哪家
  • 推广网站企业/360搜索引擎的特点
  • 做木马的网站/怎样和政府交换友链
  • 网站的页面设计/个人网站设计作品
  • 汕头建设局网站/潍坊seo推广
  • 敦煌网站做外贸怎样/福州网站开发公司
  • 绍兴网络公司网站建设/百度网盘下载速度
  • 幼儿园网站建设总结/简述seo的基本步骤
  • 中国建设教育网站/google下载安装
  • 电子商务网站建设与管理期末考试题/n127网推广
  • 做公众号必了解的网站/搜索引擎关键词排名
  • 给被k的网站做友链/做网站推广需要多少钱
  • 网站建设费用选网络专业/金泉网做网站多少钱
  • 网站建设寻求/郑州粒米seo顾问
  • 网站开发维护岗位职责/推广普通话内容
  • 长春网站运做思路/济南网站设计
  • 企业网站模板 简洁/青岛seo排名扣费
  • 网站 网络架构/关键词推广价格
  • 建设网站必须要配置apache吗/网络游戏营销策略
  • 网站建设套餐价格/整站关键词快速排名
  • wordpress支持论坛/济南seo整站优化招商电话
  • 网站聊天室怎样做炫彩马甲/免费发广告的软件
  • 东莞整合网站建设开发/今日财经新闻
  • 横沥镇做网站/长沙官网seo推广
  • 重庆建设工程信息网官网入口查询/seo的中文含义是
  • wordpress服装模板/sem优化软件选哪家
  • 大连华南网站制作公司/网络营销计划包括哪七个步骤
  • 神经网络学习笔记
  • 安全月报 | 傲盾DDoS攻击防御2025年7月简报
  • wpf之ContentPresenter
  • Mac下的Homebrew
  • 从结构到交互:HTML5进阶开发全解析——语义化标签、Canvas绘图与表单设计实战
  • 基于springboot的零食商城的设计与实现/零食销售系统的设计与实现