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

局域网内部如何做网站微信营销软件有哪些

局域网内部如何做网站,微信营销软件有哪些,正邦设计广州分公司,做网络推广费用synchronized 和 Lock 都是 Java 中用于实现线程同步的机制,它们都可以保证线程安全。 # synchronized 介绍与使用 synchronized 可用来修饰普通方法、静态方法和代码块,当一个线程访问一个被 synchronized 修饰的方法或者代码块时,会自动获…

synchronized 和 Lock 都是 Java 中用于实现线程同步的机制,它们都可以保证线程安全。

# synchronized 介绍与使用

synchronized 可用来修饰普通方法、静态方法和代码块,当一个线程访问一个被 synchronized 修饰的方法或者代码块时,会自动获取该对象的锁,其他线程将会被阻塞,直到该线程执行完毕并释放锁。这样就保证了多个线程对共享资源的操作的互斥性,从而避免了数据的不一致性和线程安全问题。 synchronized 基本使用如下:

public class SynchronizedDemo {private int count = 0;public synchronized void increment() {count++;}public synchronized int getCount() {return count;}
}

此时我们再使用多线程调用上面类的 increment 或 getCount 时,就不会出现线程安全问题了,如下代码所示:

public class SynchronizedDemoTest {public static void main(String[] args) {SynchronizedDemo demo = new SynchronizedDemo();Runnable r = () -> {for (int i = 0; i < 1000; i++) {demo.increment();}};Thread t1 = new Thread(r);Thread t2 = new Thread(r);t1.start();t2.start();try {t1.join();t2.join();} catch (InterruptedException e) {e.printStackTrace();}System.out.println("Count: " + demo.getCount());}
}

Lock 介绍与使用

Lock 是一种线程同步的机制,它与 synchronized 相似,可以用于控制对共享资源的访问。相比于 synchronized,Lock 的特点在于更加灵活,支持更多的操作。 Lock 接口定义了以下方法:

  • lock():获取锁,如果锁已被其他线程占用,则阻塞当前线程。
  • tryLock():尝试获取锁,如果锁已被其他线程占用,则返回 false,否则返回 true。
  • tryLock(long timeout, TimeUnit unit):尝试获取锁,在指定的时间范围内获取到锁则返回 true,否则返回 false。
  • unlock():释放锁。

相比于 synchronized,Lock 的优点在于:

  • 粒度更细:synchronized 关键字只能对整个方法或代码块进行同步,而 Lock 可以对单个变量或对象进行同步。
  • 支持公平锁:synchronized 不支持公平锁,而 Lock 可以通过构造函数指定锁是否是公平锁。
  • 支持多个条件变量:Lock 可以创建多个条件变量,即多个等待队列。

Lock 的实现类有很多,比较常用的有 ReentrantLock 和 ReentrantReadWriteLock。 需要注意的是,使用 Lock 时需要手动获取和释放锁,否则会导致死锁等问题。因此,一般来说建议使用 try-finally 语句块来确保锁的正确释放。例如:

import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;public class Counter {private int count = 0;private Lock lock = new ReentrantLock();public void increment() {// 加锁lock.lock();try {count++;} finally {// 释放锁lock.unlock();}}public void decrement() {// 加锁lock.lock();try {count--;} finally {// 释放锁lock.unlock();}}public int getCount() {return count;}
}

总结:synchronized VS Lock

synchronized 和 Lock 主要的区别有以下几个方面:

  1. 锁的获取方式:synchronized 是隐式获取锁的,即在进入 synchronized 代码块或方法时自动获取锁,退出时自动释放锁;而 Lock 需要程序显式地获取锁和释放锁,即需要调用 lock() 方法获取锁,调用 unlock() 方法释放锁。
  2. 锁的性质:synchronized 是可重入的互斥锁,即同一个线程可以多次获得同一把锁,而且锁的释放也只能由获得锁的线程来释放;Lock 可以是可重入的互斥锁,也可以是非可重入的互斥锁,还可以是读写锁。
  3. 锁的粒度:synchronized 是以代码块和方法为单位进行加锁和解锁,而 Lock 可以精确地控制锁的范围,可以支持多个条件变量。
  4. 性能:在低并发的情况下,synchronized 的性能优于 Lock,因为 Lock 需要显式地获取和释放锁,而 synchronized 是在 JVM 层面实现的;在高并发的情况下,Lock 的性能可能优于 synchronized,因为 Lock 可以更好地支持高并发和读写分离的场景。

总的来说,synchronized 的使用更加简单,但是在某些场景下会受到性能的限制;而 Lock 则更加灵活,可以更精确地控制锁的范围和条件变量,但是使用起来比较繁琐。需要根据具体的业务场景和性能需求来选择使用哪种锁机制

http://www.mmbaike.com/news/59912.html

相关文章:

  • 唐山网站建设哪家专业百度法务部联系方式
  • 成人自考本科官网长春seo招聘
  • 重庆网站建设leco tec友情链接交换方式有哪些
  • 网站建设制作方法做一个网站需要多少钱大概
  • 贵阳手机网站建设一个完整的营销策划案范文
  • 铁岭开原网站建设百度手机助手下载2022新版
  • 个人养老保险怎么查询搜索引擎优化心得体会
  • 百度商桥 网站慢cms
  • 怎么查看网站有没有备案百度大盘指数
  • 网站群集约化建设seo如何优化的
  • 做微信h5的网站手机助手
  • 广州视频网站建站公司it培训机构哪个好
  • 个人新闻类网站模板免费下载推广引流
  • flash怎么做网站品牌seo推广咨询
  • 安徽省建设工程造价管理协会网站谷歌平台推广外贸
  • 拌合站建站方案石家庄最新疫情
  • 荣昌区城乡建设委员会网站关键词查询的分析网站
  • 机关网站建设建议怎样创建自己的网站
  • 外贸网站模板个人做seo怎么赚钱
  • 二级建造师最好的网站目前小说网站排名
  • 二手站网站怎做百度搜索广告怎么投放
  • 惠州做棋牌网站建设网络口碑营销
  • 小程序怎么做优惠券网站关键对话
  • 杭州比较好的代运营公司福州网站seo优化公司
  • 湖南吧如何点击优化神马关键词排名
  • 福州seo兼职seo网站推广怎么做
  • 旅游前 做攻略有什么网站好用南宁排名seo公司
  • 网站宽度 自动收缩友情链接可以帮助店铺提高浏览量
  • 给卖假性药的做网站一般要判多久seo云优化外包
  • 端州网站建设沈阳网站关键词排名