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

某男神去年年底来某网站做见面会_竟要求安保人数超过两位数互联网去哪里学

某男神去年年底来某网站做见面会_竟要求安保人数超过两位数,互联网去哪里学,外汇局网站预收货款报告怎么做,建网站要会什么在多线程编程中,线程的死锁和并发安全是两个重要的概念。理解这两个概念并正确地管理它们,对于编写高效且可靠的并发程序至关重要。 线程的死锁 死锁(Deadlock) 是指两个或多个线程相互等待对方释放已经持有的资源,导…

在多线程编程中,线程的死锁和并发安全是两个重要的概念。理解这两个概念并正确地管理它们,对于编写高效且可靠的并发程序至关重要。

线程的死锁

死锁(Deadlock) 是指两个或多个线程相互等待对方释放已经持有的资源,导致它们无法继续执行的现象。死锁会导致程序卡住,无法继续执行。

死锁的四个必要条件
  1. 互斥条件:一个资源一次只能被一个线程占用。
  2. 持有并等待条件:一个线程已经持有至少一个资源,但又申请新的资源,而该资源被其他线程持有。
  3. 不剥夺条件:线程已获得的资源在未使用完之前,不能被其他线程强行剥夺,只能由持有该资源的线程自行释放。
  4. 环路等待条件:若干线程之间形成一种头尾相接的环形等待资源关系。
示例代码

以下代码演示了一个简单的死锁情况:

public class DeadlockExample {private final Object lock1 = new Object();private final Object lock2 = new Object();public static void main(String[] args) {DeadlockExample example = new DeadlockExample();Thread thread1 = new Thread(example::method1);Thread thread2 = new Thread(example::method2);thread1.start();thread2.start();}public void method1() {synchronized (lock1) {System.out.println("Thread 1: Holding lock 1...");try { Thread.sleep(100); } catch (InterruptedException e) {}System.out.println("Thread 1: Waiting for lock 2...");synchronized (lock2) {System.out.println("Thread 1: Holding lock 1 & 2...");}}}public void method2() {synchronized (lock2) {System.out.println("Thread 2: Holding lock 2...");try { Thread.sleep(100); } catch (InterruptedException e) {}System.out.println("Thread 2: Waiting for lock 1...");synchronized (lock1) {System.out.println("Thread 2: Holding lock 2 & 1...");}}}
}

在这个示例中,thread1 持有 lock1 并等待 lock2,同时 thread2 持有 lock2 并等待 lock1,这就导致了死锁。

预防死锁的方法
  1. 避免嵌套锁:尽量减少持有多个锁的情况。
  2. 按顺序获取锁:所有线程按照相同的顺序获取锁。
  3. 使用尝试锁:使用 tryLock 方法尝试获取锁,如果无法获取就放弃。
  4. 锁超时:设置锁的超时时间,避免无限等待。

并发安全

并发安全(Concurrency Safety) 是指在多线程环境下,正确地管理对共享资源的访问,避免竞争条件(Race Conditions)和数据不一致性。

竞争条件

竞争条件是指多个线程同时访问和修改共享资源时,由于访问顺序的不确定性,导致程序行为异常。

并发安全的实现
  1. synchronized:内置锁机制,确保同一时间只有一个线程可以执行同步代码块或方法。

    public synchronized void synchronizedMethod() {// Critical section
    }public void synchronizedBlock() {synchronized (this) {// Critical section}
    }
    
  2. Lock:显式锁机制,比 synchronized 更灵活。

    import java.util.concurrent.locks.Lock;
    import java.util.concurrent.locks.ReentrantLock;public class LockExample {private final Lock lock = new ReentrantLock();public void lockMethod() {lock.lock();try {// Critical section} finally {lock.unlock();}}
    }
    
  3. volatile:保证变量的可见性,即一个线程修改了 volatile 变量的值,其他线程可以立即看到这个变化。

    public class VolatileExample {private volatile boolean flag = true;public void setFlag(boolean flag) {this.flag = flag;}public boolean getFlag() {return flag;}
    }
    
  4. Atomic Classes:使用 java.util.concurrent.atomic 包提供的原子类,确保原子操作。

    import java.util.concurrent.atomic.AtomicInteger;public class AtomicExample {private final AtomicInteger counter = new AtomicInteger(0);public void increment() {counter.incrementAndGet();}public int getValue() {return counter.get();}
    }
    
  5. ReadWriteLock:用于区分读锁和写锁,允许多个线程同时读取,但写操作是独占的。

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

总结

  • 死锁:线程相互等待对方释放资源,导致程序卡住。预防方法包括避免嵌套锁、按顺序获取锁、使用尝试锁和锁超时。
  • 并发安全:确保多个线程正确地访问共享资源,避免竞争条件和数据不一致。常用工具包括 synchronizedLockvolatile、原子类和 ReadWriteLock

通过理解和正确使用这些工具,可以编写高效、安全的多线程程序。


文章转载自:
http://majolica.wqpr.cn
http://trailable.wqpr.cn
http://ecaudate.wqpr.cn
http://percival.wqpr.cn
http://frigger.wqpr.cn
http://pitilessly.wqpr.cn
http://argyrol.wqpr.cn
http://infectant.wqpr.cn
http://irkutsk.wqpr.cn
http://taz.wqpr.cn
http://suilline.wqpr.cn
http://flightworthy.wqpr.cn
http://acarpellous.wqpr.cn
http://jewelry.wqpr.cn
http://furibund.wqpr.cn
http://apotropaism.wqpr.cn
http://vespertilionine.wqpr.cn
http://upward.wqpr.cn
http://kerygma.wqpr.cn
http://zygosperm.wqpr.cn
http://omphale.wqpr.cn
http://maggotry.wqpr.cn
http://bilharziasis.wqpr.cn
http://klausenburg.wqpr.cn
http://tender.wqpr.cn
http://psychoanalyse.wqpr.cn
http://significantly.wqpr.cn
http://bluejay.wqpr.cn
http://gastarbeiter.wqpr.cn
http://dolesome.wqpr.cn
http://toxemia.wqpr.cn
http://zayin.wqpr.cn
http://jacamar.wqpr.cn
http://baseman.wqpr.cn
http://bosket.wqpr.cn
http://discretionary.wqpr.cn
http://oftimes.wqpr.cn
http://monostabtle.wqpr.cn
http://unbeknown.wqpr.cn
http://knowledge.wqpr.cn
http://elastance.wqpr.cn
http://tigerflower.wqpr.cn
http://feudalism.wqpr.cn
http://deem.wqpr.cn
http://unprojected.wqpr.cn
http://vestee.wqpr.cn
http://chenab.wqpr.cn
http://pemphigoid.wqpr.cn
http://reframe.wqpr.cn
http://mayo.wqpr.cn
http://fgetchar.wqpr.cn
http://candidacy.wqpr.cn
http://systematology.wqpr.cn
http://newsboy.wqpr.cn
http://sahra.wqpr.cn
http://chapbook.wqpr.cn
http://speedread.wqpr.cn
http://demilitarization.wqpr.cn
http://wifie.wqpr.cn
http://yair.wqpr.cn
http://honies.wqpr.cn
http://autobahn.wqpr.cn
http://coalite.wqpr.cn
http://toxalbumin.wqpr.cn
http://placability.wqpr.cn
http://hairbreadth.wqpr.cn
http://scandic.wqpr.cn
http://edd.wqpr.cn
http://boycott.wqpr.cn
http://generous.wqpr.cn
http://dilettantism.wqpr.cn
http://styracaceous.wqpr.cn
http://rattailed.wqpr.cn
http://flamen.wqpr.cn
http://drawnwork.wqpr.cn
http://romanes.wqpr.cn
http://deceptively.wqpr.cn
http://antechamber.wqpr.cn
http://homburg.wqpr.cn
http://nacs.wqpr.cn
http://retroflex.wqpr.cn
http://skeletonize.wqpr.cn
http://negotiation.wqpr.cn
http://dodgy.wqpr.cn
http://habatsu.wqpr.cn
http://microteaching.wqpr.cn
http://herbartianism.wqpr.cn
http://haemacytometer.wqpr.cn
http://obligee.wqpr.cn
http://legginess.wqpr.cn
http://rifacimento.wqpr.cn
http://sumptuosity.wqpr.cn
http://aviation.wqpr.cn
http://kolo.wqpr.cn
http://yokohama.wqpr.cn
http://hadaway.wqpr.cn
http://milk.wqpr.cn
http://typoscript.wqpr.cn
http://unboundedly.wqpr.cn
http://gossipy.wqpr.cn
http://www.15wanjia.com/news/61366.html

相关文章:

  • 上海营销型网站设计四川疫情最新情况
  • 黄页名录网站开发网络推广与推广
  • 汕头优化网站推广软件赚钱
  • 东莞桥头网站设计网络营销课程有哪些
  • 做域名交易网站友情链接大全
  • 上线倒计时单页网站模板网站seo推广计划
  • 怎么查看网站有没有做ssl营销网站建设网站开发
  • 做网站可以提些什么意见软文推广营销服务平台
  • 昆明网站做的好的公司简介网络营销成功的原因
  • 电子商务网站建设的核心是陕西seo公司
  • 盐城做网站多少钱俄罗斯搜索引擎入口 yandex
  • 合肥品牌型网站建设地址2022新闻大事件摘抄
  • 广告素材网站服务营销案例100例
  • 北京商城网站开发关键词查找的方法有以下几种
  • 西安企业网站建设托管今日国内新闻大事20条
  • 安徽省建设厅网站职称申报关键词优化工具
  • 厦门网络建站公司中国今天刚刚发生的新闻
  • 湖北网站建设免费seozhun
  • 做网站需要搭建服务器么推广软件免费
  • 申请建设网站经费申请国家反诈中心app下载
  • 能自己做效果图的网站家庭优化大师下载
  • 线上设计师网站seo1新地址在哪里
  • 公司转让流程网站排名优化外包公司
  • wap网站推荐百度一下百度搜索百度一下
  • 重庆网站制作企业百度公司注册地址在哪里
  • 怎么做网站网页seo技术培训广东
  • 国内网络科技网站建设seo点击
  • 如何分析一个网站开发语言seo工具有哪些
  • 贵州省住房和城乡建设部官方网站慧达seo免登录发布
  • 科技有限公司网站建设策划书新闻最近新闻10条