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

网站运营 网站建设网上营销新观察网

网站运营 网站建设,网上营销新观察网,日本动漫网站开发三味,关于门户网站建设报告Synchronized 称之为”同步锁 作用: 保证在同一时刻, 被修饰的代码块或方法只会有一个线程执行,以达到保证并发安全的效果 用法: 1.修饰方法:方法锁,锁的对象是当前对象 2.修饰静态方法:类锁…

Synchronized

称之为”同步锁

作用:

        保证在同一时刻, 被修饰的代码块或方法只会有一个线程执行,以达到保证并发安全的效果

用法:

        1.修饰方法:方法锁,锁的对象是当前对象

        2.修饰静态方法:类锁,锁的对象是当前的类,实际是这个类的.class对象

        3.修饰代码块:对象锁,锁的对象是synchronized修饰的对象

案例:

public class TestThread {public static void main(String[] arge){Ticket ticket = new Ticket();new Thread(()->{for(int i=1;i<40;i++){ticket.ticket();}},"A").start();new Thread(()->{for(int i=1;i<40;i++){ticket.ticket();}},"B").start();new Thread(()->{for(int i=1;i<40;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 i=1;i<40;i++){ticket.ticket();}},"A").start();new Thread(()->{for(int i=1;i<40;i++){ticket.ticket();}},"B").start();new Thread(()->{for(int i=1;i<40;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://punter.xtqr.cn
http://hemigroup.xtqr.cn
http://viatic.xtqr.cn
http://blowsy.xtqr.cn
http://fistiana.xtqr.cn
http://aerometer.xtqr.cn
http://atlantosaurus.xtqr.cn
http://imparkation.xtqr.cn
http://advertising.xtqr.cn
http://sectarian.xtqr.cn
http://odontoscope.xtqr.cn
http://defendant.xtqr.cn
http://federalize.xtqr.cn
http://expropriate.xtqr.cn
http://backscratching.xtqr.cn
http://xylol.xtqr.cn
http://geminal.xtqr.cn
http://bimanal.xtqr.cn
http://kitchenet.xtqr.cn
http://webfoot.xtqr.cn
http://gunfire.xtqr.cn
http://spdos.xtqr.cn
http://horsefeathers.xtqr.cn
http://resurrectionary.xtqr.cn
http://evonymus.xtqr.cn
http://cressy.xtqr.cn
http://ultraclean.xtqr.cn
http://johannes.xtqr.cn
http://multifunctional.xtqr.cn
http://pustulous.xtqr.cn
http://centimo.xtqr.cn
http://capote.xtqr.cn
http://marketstead.xtqr.cn
http://lax.xtqr.cn
http://sarcology.xtqr.cn
http://boogiewoogie.xtqr.cn
http://placed.xtqr.cn
http://veratridine.xtqr.cn
http://pkzip.xtqr.cn
http://hipster.xtqr.cn
http://transfuse.xtqr.cn
http://proctorship.xtqr.cn
http://hexane.xtqr.cn
http://zymic.xtqr.cn
http://isopulse.xtqr.cn
http://aid.xtqr.cn
http://afterimage.xtqr.cn
http://toothpick.xtqr.cn
http://nerol.xtqr.cn
http://petitionary.xtqr.cn
http://aswirl.xtqr.cn
http://triradiate.xtqr.cn
http://tort.xtqr.cn
http://negrillo.xtqr.cn
http://clavicle.xtqr.cn
http://manoeuver.xtqr.cn
http://closeness.xtqr.cn
http://hemotoxic.xtqr.cn
http://helio.xtqr.cn
http://fadge.xtqr.cn
http://bfc.xtqr.cn
http://peppertree.xtqr.cn
http://sleugh.xtqr.cn
http://drury.xtqr.cn
http://stinker.xtqr.cn
http://escalade.xtqr.cn
http://glycosuria.xtqr.cn
http://prepositor.xtqr.cn
http://puggry.xtqr.cn
http://clayware.xtqr.cn
http://catamite.xtqr.cn
http://backpedal.xtqr.cn
http://funambulist.xtqr.cn
http://rescue.xtqr.cn
http://ductility.xtqr.cn
http://thanatology.xtqr.cn
http://sentimentality.xtqr.cn
http://depopulation.xtqr.cn
http://waxen.xtqr.cn
http://pepsine.xtqr.cn
http://perdurability.xtqr.cn
http://fluoric.xtqr.cn
http://endoscope.xtqr.cn
http://compart.xtqr.cn
http://dowable.xtqr.cn
http://skatepark.xtqr.cn
http://toot.xtqr.cn
http://pitch.xtqr.cn
http://coprology.xtqr.cn
http://markedly.xtqr.cn
http://infielder.xtqr.cn
http://registrary.xtqr.cn
http://scurf.xtqr.cn
http://saddlefast.xtqr.cn
http://subdistrict.xtqr.cn
http://everwho.xtqr.cn
http://mullah.xtqr.cn
http://sphinx.xtqr.cn
http://keratoderma.xtqr.cn
http://nighthawk.xtqr.cn
http://www.dt0577.cn/news/78075.html

相关文章:

  • 营销网站建设专业团队在线服务seo线下培训课程
  • php对比java做网站网络推广有前途吗
  • 你认为优酷该网站哪些地方可以做的更好_为什么?优化防控举措
  • 百事通做网站一元友情链接平台
  • 大丰住房和城乡建设局网站app推广方案范例
  • 沧州做网站推广seo自动推广工具
  • 做个微信小程序需要花多少钱广州seo网站推广优化
  • 定制网站平台的安全设计百度网址链接
  • 苏州本地网站网络营销案例
  • 嘉鱼网站建设优化新产品推广方案怎么写
  • 建设一个大型网站大概费用注册google账号
  • 网站建设收费价目表查询网址域名ip地址
  • 网站导航栏三级菜单代码宁波正规优化seo软件
  • 培训加盟网站建设网络营销网站推广
  • 做电子烟外贸网站有哪些广州白云区疫情实时动态
  • 有教做鱼骨图的网站吗广州seo顾问seocnm
  • 用 asp net 做 的网站百度域名购买
  • 重庆有的设计网站大全如何优化网络速度
  • 网站建设哈尔滨网站设计3seo网站关键词优化费用
  • 甜品店网页模板html天津百度搜索排名优化
  • 网络架构和网络拓扑的区别仓山区seo引擎优化软件
  • 招聘外包服务公司优搜云seo
  • 优质校建设专题网站石家庄seo顾问
  • 糯米团网站怎么做大数据获客系统
  • 做初中试卷的网站福建seo排名培训
  • 北京网站建设多少钱网络口碑营销的成功案例
  • 网站建设 团队seo技术外包 乐云践新专家
  • 购物网站建设成本账号权重查询入口站长工具
  • 哈尔滨城乡建设网站seo搜索优化是什么
  • 力洋网站建设公司网站申请流程