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

咸阳网站建设费用国内品牌备案建站

咸阳网站建设费用,国内品牌备案建站,怎么把网站黑掉,怎样建设网站论文Synchronized 称之为”同步锁 作用#xff1a; 保证在同一时刻#xff0c; 被修饰的代码块或方法只会有一个线程执行#xff0c;以达到保证并发安全的效果 用法#xff1a; 1.修饰方法#xff1a;方法锁#xff0c;锁的对象是当前对象 2.修饰静态方法#xff1a;类锁…Synchronized 称之为”同步锁 作用 保证在同一时刻 被修饰的代码块或方法只会有一个线程执行以达到保证并发安全的效果 用法 1.修饰方法方法锁锁的对象是当前对象 2.修饰静态方法类锁锁的对象是当前的类实际是这个类的.class对象 3.修饰代码块对象锁锁的对象是synchronized修饰的对象 案例 public class TestThread {public static void main(String[] arge){Ticket ticket new Ticket();new Thread(()-{for(int i1;i40;i){ticket.ticket();}},A).start();new Thread(()-{for(int i1;i40;i){ticket.ticket();}},B).start();new Thread(()-{for(int i1;i40;i){ticket.ticket();}},C).start();} }class Ticket{private int num 20;synchronized void ticket(){if(num 0){System.out.println(Thread.currentThread().getName()剩余票数num--);}} } 修饰方法 public synchronized void method() { } 修饰代码块 class SyncThread implements Runnable {private static int count;public SyncThread() {count 0;}public void run() {synchronized(this) {for (int i 0; i 5; i) {try {System.out.println(Thread.currentThread().getName() : (count));Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace();}}}}public int getCount() {return count;} }public class Demo00 {public static void main(String args[]){ SyncThread s new SyncThread();Thread t1 new Thread(s);Thread t2 new Thread(s);t1.start();t2.start();} } 修饰类 给class加锁和上例的给静态方法加锁是一样的所有对象公用一把锁 class ClassName {public void method() {synchronized(ClassName.class) {}} } 注意 1.在定义接口方法时不能使用synchronized关键字构造方法不能使用synchronized关键字 2.实现同步是要很大的系统开销作为代价的甚至可能造成死锁所以尽量避免无谓的同步控制 3.每个对象只有一个锁与之相关联谁拿到这个锁谁就可以运行它所控制的那段代码 Lock Lock是一个同步线程机制 主要方法 lock()获取锁加锁 tryLock()判断锁是否可用 unlock()释放锁 使用 public class TestThread2 {public static void main(String[] arge){Ticket2 ticket new Ticket2();new Thread(()-{for(int i1;i40;i){ticket.ticket();}},A).start();new Thread(()-{for(int i1;i40;i){ticket.ticket();}},B).start();new Thread(()-{for(int i1;i40;i){ticket.ticket();}},C).start();} }class Ticket2{private int num 20;void ticket(){Lock lock new ReentrantLock();lock.lock();try{if(num 0){System.out.println(Thread.currentThread().getName()剩余票数num--);}}catch (Exception e){e.printStackTrace();}finally {lock.unlock();}} } ReentrantLock 重入锁也叫做递归锁指的是同一线程 外层函数获得锁之后 内层递归函数仍然有获取该锁的代码但不受影响。避免死锁问题 public class ReentrantDemo implements Runnable {Lock lock new ReentrantLock();Overridepublic void run() {set();}public void set() {try {lock.lock();System.out.println(set 方法);get();} catch (Exception e) {e.printStackTrace();} finally {lock.unlock();// 必须在finally中释放}}public void get() {try {lock.lock();System.out.println(get 方法);} catch (Exception e) {e.printStackTrace();} finally {lock.unlock();}}public static void main(String[] args) {ReentrantDemo reentrantDemo new ReentrantDemo();new Thread(reentrantDemo).start();} } 同一个线程首先在set方法中获取锁然后调用get方法get方法中重复获取同一个锁。两个方法都执行成功 ReentrantReadWriteLock 读写锁可以分别获取读锁或写锁。 特点 读锁使用共享模式写锁使用独占模式读锁可以在没有写锁的时候被多个线程同时持有写锁是独占的。当有读锁时写锁就不能获得而当有写锁时除了获得写锁的这个线程可以获得读锁外其他线程不能获得读锁 常用方法 writeLock():获取写锁 readLock()获取读锁 区别 1.synchronized内置关键字lock是一个Java类 2.synchronized无法判断锁状态lock可以判断是否获取到锁 3.synchronized会自动释放锁lock必须手动释放锁不释放会造成死锁 4.synchronized可重入锁不可以中断非公平lock可重入锁可以判断锁非公平可以设置 5.synchronized适合锁少量的代码同步问题lock适合锁大量的同步代码
http://www.hkea.cn/news/14513019/

相关文章:

  • 网站内容建设和管理系统wordpress还可以打通小程序
  • 企业网站建立流程网站ip地址是什么
  • 营销型网站建设报价网页设计免费模板图片
  • 长春网站建设翻译wordpress怎么做伪静态
  • 庆阳门户网成都优化外包
  • 免费家具网站模板信息流优化师简历模板
  • 山东淄博网站建设的公司浙江建设厅官方网站
  • 哈尔滨房地产网站建设做个网站要多少钱 一般
  • 塑胶卡板东莞网站建设支持翠屏区网站建设
  • 杭州营销网站建设广州翼讯资讯科技有限公司 网站
  • 第一模板网站浙江省住建和城乡建设厅官方网站
  • html网站优化关键对话
  • 网站不会更新文章微信小程序开发流程
  • 网站源码建站教程电子商务是学什么的
  • 微擎可以做企业网站吗山东省郓城县建设局官方网站
  • 网站视频怎么做的龙岩网上通缉犯名单
  • 网站标题就一个关键词大沥网站制作
  • 福建住房与城乡建设部网站公司做网站多
  • wordpress获取部分分类seo在线优化系统
  • 湖南建设人力资源官方网站扬州网站优化
  • 开拓网站建设素材网站的下载服务器怎么做
  • 兴宁网站设计如何做电子商城网站
  • 网站备案无前置审批文件怎么利用360域名做网站
  • 教学成果奖网站建设沈阳网站优化培训
  • 网站从哪些方面来做室内设计师网络接单
  • 用股票代码做网站的网站正在建设中色天使
  • 网站设配色金蝶财务软件一般多少钱
  • 做社交网站网站需要实名认证
  • 个人社团网站怎么做徐州百姓网招聘信息网
  • 杭州网站建设案例wordpress做微信支付