java同步锁synchronized原理,java线程锁synchronized

  java同步锁synchronized原理,java线程锁synchronized

  

目录
一、锁定锁二、锁的底层三、案例案例一:传统的同步的实现案例二:锁定锁的实现四、锁定锁和同步的的区别写在前边:在爪哇服务端中,会常常遇到并发的场景,以下我使用两个售票的案例实现传统的锁锁与同步的加锁解决线程安全问题

  本章代码:Gitee: juc.demo

  

一、Lock锁

重入锁类: 可重用锁(公平锁非公平锁)ReentrantReadWriteLock .读取锁定:读锁ReentrantReadWriteLock .写锁:写锁

  

二、锁的底层

锁的底层有公平锁和非公平锁。其中:

  公平锁:十分公平,不能插队。非公平锁:十分不公平,可以插队。(默认非公平锁)

  

三、案例

  

案例一:传统的synchronized实现

/** *同步同步代码块保证售票线程安全* * @作者石军* @ Create 2022-04-10 22:46 */public类sale Ticket demo 01 { public static void main(String[]args){ Ticket Ticket=new Ticket();新线程(()-{ for(int I=0;i 60I){票。sale();} }, AA ).start();}, BB ).start();新线程(()- { }, CC ).start();}静态类别票证{ //50张飘票私有int num=50//售票同步(同步代码块) 本质: 队列,锁公共同步void sale(){ if(num 0){ system。出去。println(线程。当前线程().getName()卖出了(数字-)票,剩余: num);}}

  

案例二:Lock锁的实现

/** *锁加锁保证售票线程安全* * @作者石军* @ Create 2022-04-10 22:46 */public类saleticketdemo 02 { public static void main(String[]args){ ticket 2 ticket=new ticket 2();新线程(()-{ for(int I=0;ticket.sale().}, AA ).start();新线程(()-{ for(int I=0;ticket.sale().}, BB ).start();新线程(()-{ for(int I=0;ticket.sale().},抄送)。start();}静态类别门票2{ //50张飘票私有int num=50//加锁三部曲//1、 创建锁=new reentrant lock();//2、 加锁=锁定。lock();//3、 释放锁=锁定。unlock();公开无效销售(){ //可重入锁默认:非公平锁:十分不公平,可以插队。(默认非公平锁)Lock Lock=new reentrant Lock();//加锁锁定。lock();尝试{ //执行业务if(num 0){ system。出去。println(线程。当前线程().getName()卖出了(数字-)票,剩余: num);} }捕捉(异常e){ e . printstacktrace();}最后{ //解锁锁定。unlock();} } }}

  

四、Lock锁和synchronized的区别

snchronized是内置的Java关键字;Lock是一个Java类。Synchronized无法确定获取的锁的状态;Lock可以确定锁是否已被获取。(boolean b=lock . try lock();)同步会自动释放锁;当同步线程1被锁阻塞时,锁必须有手动释放锁,如果不释放锁,死锁.线程2将一直等待;当锁线程1获得锁块时,线程2等待足够长的时间,然后中断去做别的事情。同步重入锁:不可以中断的,非公平;锁重入锁:可以判断锁,非公平(可以自己设置)。lock . lock interruptible();方法:当两个线程想同时通过这个方法获取一个锁时,如果此时线程A获取了锁,而线程B只是等待,那么在线程B上调用threadB.interrupt()方法可以中断线程B的等待进程,Synchronized适用于锁定少量代码同步问题;Lock适用于锁定大量同步码。关于Java并发系列JUC中的Lock lock和synchronized代码块的这篇文章到此结束。关于Javasynchronized代码块的更多信息,请搜索以前关于流行IT的文章或继续浏览下面的相关文章。我希望你以后能更多地支持流行音乐!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: