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

泰安建设工程招聘信息网站电商网站seo怎么做

泰安建设工程招聘信息网站,电商网站seo怎么做,网址查询ip解析,mantra wordpress内部锁 在 Java 中,每个对象都有一个内部锁,也称为监视器锁或对象锁。内部锁是通过在代码块或方法前加上 synchronized 关键字来实现的。当一个线程执行一个带有 synchronized 关键字的方法或代码块时,它必须先获得该对象的内部锁&#xff0…

内部锁

在 Java 中,每个对象都有一个内部锁,也称为监视器锁或对象锁。内部锁是通过在代码块或方法前加上 synchronized 关键字来实现的。当一个线程执行一个带有 synchronized 关键字的方法或代码块时,它必须先获得该对象的内部锁,才能执行该方法或代码块。

同步代码块

synchronized(锁对象){

}

把同步代码块中的代码锁住,其中的代码只能让一个线程执行(在同一时间内)

必须保证 锁对象 总是同一个对象

想象 锁对象 代表一道门,没有线程进入时,门开着,一旦有线程A进入之后就会关上这扇门,其他线程就不能从这扇门进入同步代码块,当线程A执行完同步代码块中的内容离开就会重新打开这道门,其他线程才能够进入。

但如果其他线程B来的时候拿到的是另一个 锁对象 ,另一个 锁对象就好是另一扇门b, 这一扇门没有被关闭, 后来的线程B从 门b 就可以进入同步代码块,因此产生了不同步问题。

 同步方法

public synchronized void increment() { count++; } 

同步方法的锁为调用方法的对象 this

静态方法不能使用this,那就是 this.class

Lock

Java中的Lock是一种用于控制多个线程访问共享资源的机制。与传统的同步块相比,Lock提供了更细粒度的线程控制,并且可以提供更多的灵活性和性能优势。

  1. Lock的定义与基本用法

Lock是Java提供的一种线程同步机制。与synchronized不同,Lock需要程序员手动申请和释放锁。Java中提供了两种类型的Lock:ReentrantLock和ReentrantReadWriteLock.ReadLock/WriteLock。其中,ReentrantLock是一个可重入的互斥锁,而ReentrantReadWriteLock则支持读写锁。

Lock lock = new ReentrantLock();
lock.lock();
try {// 在锁定状态下执行线程安全的代码
} finally {lock.unlock();
}

上述代码中,首先创建了一个ReentrantLock对象,然后通过调用lock()方法获得了该锁的控制权,进而执行了线程安全的代码。最后,通过调用unlock()方法释放了该锁。

需要注意的是,为了避免死锁的发生,我们应该总是使用try-finally语句块来保证在任何情况下都能释放锁。

2 可中断锁

在某些情况下,线程需要能够响应中断请求,这时我们可以使用可中断锁。当一个线程正在等待获取锁的时候,如果接收到了中断请求,它可以选择放弃获取锁,而不是一直等待下去。

Lock lock = new ReentrantLock();
try {lock.lockInterruptibly();try {// 在锁定状态下执行线程安全的代码} finally {lock.unlock();}
} catch (InterruptedException e) {// 处理中断异常
}

在上述代码中,我们使用了lockInterruptibly()方法来获得可中断锁的控制权。如果在等待获取锁的过程中,线程接收到了中断请求(线程的interrupt()方法,向其发送中断请求),就会抛出InterruptedException异常。在catch语句块中,我们可以处理该异常,并做出相应的处理。

读写锁

Java 中的读写锁是一种特殊的锁,用于控制多个线程对共享资源的读和写。读写锁分为两种类型:读锁和写锁。读锁允许多个线程同时读取共享资源,而写锁只允许一个线程写入共享资源。如果一个线程获取了写锁,则其他线程不能读取或写入共享资源。

Java 中的 java.util.concurrent.locks.ReentrantReadWriteLock 类提供了读写锁的实现。该类有两个方法:readLock()writeLock(),分别返回读锁和写锁。获取读锁的线程可以同时读取共享资源,获取写锁的线程必须等待所有读锁释放后才能写入共享资源。

import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;public class SharedData {private final ReadWriteLock lock = new ReentrantReadWriteLock();private int data = 0;public void writeData(int newData) {lock.writeLock().lock();try {data = newData;} finally {lock.writeLock().unlock();}}public int readData() {lock.readLock().lock();try {return data;} finally {lock.readLock().unlock();}}
}

在上面的示例代码中,SharedData 类使用 ReadWriteLock 来控制对共享数据 data 的读写访问。writeData 方法获取写锁,修改 data 变量的值,然后释放写锁。readData 方法获取读锁,读取 data 变量的值,然后释放读锁。由于多个线程可以同时获取读锁,因此读操作可以并发进行,而写操作需要独占锁,因此写操作只能一个一个地进行。

读写锁适用于对于某个数据结构,读的操作远远多于写操作的场景。如果读写操作的次数差不多,使用读写锁的效果并不好,还不如使用内部锁。

http://www.15wanjia.com/news/39614.html

相关文章:

  • 网站域名怎么进行实名认证网站的seo方案
  • 做虚拟网站要花多少钱深圳网站维护
  • 做美食的网站有哪些win7优化大师免安装版
  • 合肥做网站123cms搜索引擎收录提交入口
  • 网站两边横幅怎么做长沙网站推广服务公司
  • 设计师都上什么网站黄山网络推广公司
  • 做俄罗斯外贸的网站中国营销网
  • 网站助手 伪静态提高百度搜索排名工具
  • 郑州网站建设 app开发山东省住房和城乡建设厅
  • 管理网站建设源代码程序百度信息流投放
  • 网级移动营销下载武汉网站seo服务
  • 搜索引擎推广试题seo服务是什么意思
  • 陕西煤业化工建设集团有限公司网站项目优化seo
  • 做淘宝京东还是独立网站seo网络排名优化技巧
  • 深圳海外医疗网站建设外贸业务推广
  • 淘宝网站建设策划书做网站需要什么条件
  • 短网址生成在线宝鸡seo优化公司
  • 去国外做移动支付网站吗宁波企业seo外包
  • 杭州网站seo价格明年2024年有疫情吗
  • 校园文化创意产品设计宝鸡seo外包公司
  • 网站建设的色彩搭配b站推广入口
  • 中国万网域名官网seo排名赚下载
  • 表格网站源码上海百度推广平台
  • 金华模板建站定制网站优化快速排名教程
  • 网站如何做防劫持日本和韩国是亚洲的国家
  • 手机端网站做app吴中seo网站优化软件
  • 点击一个网站跳转到图片怎么做的万网注册域名查询官方网站
  • 广州番禺专业建网站口碑营销案例2022
  • 合肥房产交易网漯河搜狗关键词优化排名软件
  • 乔拓云智能建站免费注册优化公司网站排名