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

平江网站建设网站运营师

平江网站建设,网站运营师,制作灯笼英语,网站首页改版方案线程同步 案例:三个窗口卖100张票 //定义一个类SellTicket实现Runnable接口,定义成员变量100张票 public class SellTicket implements Runnable{private int tickets 100;//重写run方法Overridepublic void run(){while (true){ //没有票后&…

线程同步

  1. 案例:三个窗口卖100张票

    //定义一个类SellTicket实现Runnable接口,定义成员变量100张票
    public class SellTicket implements Runnable{private int tickets = 100;//重写run方法@Overridepublic void run(){while (true){       //没有票后,死循环一直让动作执行if(tickets>0){  //判断票数大于1卖票System.out.println(Thread.currentThread().getName()+"正在出售第"+tickets+"张票");//告知卖票窗口tickets--; //卖票后总数减一}}}
    }
    //创建测试类
    public class SellTicketDemo{public static void main(String[] args){//创建SellTicket类对象SellTicket st = new SellTicket();//创建三个Thread类对象,把SellTicket对象作为构造方法的参数,给出对应窗口名称Thread t1 = new Thread(st,"窗口1");Thread t2 = new Thread(st,"窗口2");Thread t3 = new Thread(st,"窗口3");//启动线程t1.start();t2.start();t3.start();}
    }
    1. 多线程程序出现安全问题(条件:多线程环境;有共享数据;有多条语句操作共享数据)

避免安全问题,需要锁多条语句操作共享数据,可以使用同步代码块实现(线程过多时耗费资源)

格式:synchronized(任意对象){多条语句操作共享数据的代码}(相当于给代码加锁,任意对象可以看成是一把锁)

public class SellTicket implements Runnable{private int tickets = 100;private Object obj = new Object();//创建一个Object对象,当作同一把锁@Overridepublic void run(){while (true){synchronized(obj){  //当t1进来后,就会锁住代码,其他线程进不来if(tickets>0){  try{Thread.sleep(100);}//休息100毫秒catch(InterruptedException e){e.printStackTrace();}System.out.println(Thread.currentThread().getName()+"正在出售第"+tickets+"张票");tickets--; }}}}
}
  1. 同步方法: 同步方法:就是把synchronized关键字加到方法上 格式:修饰符 synchronized返回值类型 方法名(方法参数){}

    同步方法锁对象是 :this synchronized(this)

    同步静态方法:把synchronized关键字加到静态方法上 格式:修饰符 static synchronized 返回值类型 方法名(方法参数){}

    同步静态方法锁对象是:类名.class synchronized(SellTicket.class)

  2. Lock锁实现提供比使用synchronized方法和语句可以获得更广泛的锁定操作

    Lock中提供了获得锁和释放锁的方法:void lock():获得锁 void unlock():释放锁

    Lock是接口不能直接实例化,采用实现类ReentranctLock来实例化 ReentrantLock的构造方法:ReentrantLock():创建一个ReentrantLock实例

public class SellTicket implements Runnable{private int tickets = 100;private Lock lock = new ReentrantLock();//创建一个ReentrantLock实例化对象@Overridepublic void run(){while (true){try{lock.lock();if(tickets>0){  try{Thread.sleep(100);}//休息100毫秒catch(InterruptedException e){e.printStackTrace();}System.out.println(Thread.currentThread().getName()+"正在出售第"+tickets+"张票");tickets--; }finally{lock.unlock();}//释放锁不管上面代码是否出现错误都执行}}}
}
http://www.qdjiajiao.com/news/11831.html

相关文章:

  • 网络营销广告名词解释西安seo顾问公司
  • 信阳做网站的公司免费建网页
  • wordpress 搭建网站友情链接平台网站
  • 色块布局网站首页模板长沙seo步骤
  • 手机网站用什么域名推广一手渠道
  • 做批发网站有哪些互联网推广项目
  • 论述政府门户网站建设的基本意义360站长工具
  • 郑州网站建设技术托管南昌seo排名扣费
  • 菜鸟式网站建设图书网络促销
  • 个人网站能不能做论坛东莞seo建站优化哪里好
  • logo做ppt模板下载网站百度竞价推广开户内容
  • 上海网站建设的软件职业技能培训网站
  • 装修公司的口碑排名国内好的seo
  • 网站建设与维护 实验报告心得深圳抖音推广
  • 安阳网站建设哪家便宜个人博客seo
  • 杭州网站建设商城价格汕头百度网站排名
  • 新网站如何做seo推广网站建设案例
  • 新乡专业做网站公司搜狗搜索引擎推广
  • 怎么查开发商剩余房源安卓优化神器
  • 日本女做受网站BB松原头条新闻今日新闻最新
  • 建一个自己的网站怎么推广一个产品
  • 怎样注册公司网站建立网页如何注册百度账号
  • wordpress怎样添加会员长春seo关键词排名
  • 网站广告招商应该怎么做怎样做推广
  • 手机网站怎么做seo郑州seo顾问热狗
  • 让医院做网站的策划书seo排名谁教的好
  • 虎门营销型网站建设nba最新消息新闻
  • finecms做抖音seo排名软件是否合法
  • 网站开发 如何定位搜索引擎seo排名优化
  • 花多少钱能把网站做到页面搜索引擎营销的方法包括