美文网首页
多线程2

多线程2

作者: TYcom | 来源:发表于2017-07-26 00:31 被阅读25次

1.同步:多个线程需要对同一数据的存取。两银行账户资金互转,如果两个线程同时取A账户金额100,转50给账户B,A账户只减了50,B账户却加了100;

2.锁对象:synchronized;Lock l=new ReentrantLock();

ReentrantLock()如果传入true,得到一个公平策略锁对象,等待时间越长的线程越容易获得该锁,该锁会大大降低性能。

l.lock()加锁;l.unlock()释放锁;为了防止程序抛出异常,不释放锁从而造成死锁,应该在finally块中释放锁;

3.条件对象:当线程进入临界区,却发现只有某一条件满足之后才能执行,要用条件对象管理那些获得了锁却不能做有用工作的线程。

银行账户转账问题说明:一个线程获得锁对象,进行转账时发现账户余额不足,就不能进行转账,其他线程也不能对该账户进行存钱,因为锁具有排它性,所有需要条件对象。

锁对象调用newCondition()获得条件对象Cindition,条件对象.await()当前对象阻塞并放弃锁;signal()随机解除当前条件对象的等待集中某个线程的阻塞状态,signalAll()解除当前条件对象等待集中所有线程。

await()用法:

while(条件判断){Condition对象.await();  }

解除阻塞并得到锁的线程会从阻塞的地方开始执行。

4.synchronized:每个对象有个内部锁,该锁有个内部条件,内部锁控制要进入synchronized方法的线程,内部条件管理调用了wait()的线程。

多线程2

尽量不使用synchronized与Lock/Condition而使用concurrent包工具。

5.同步阻塞:进入一个同步阻塞获得锁synchronized(obj){。。。}

6.监视器:

相关文章

  • Day18-多线程

    1.多线程技术1 2.多线程技术2 3.多线程技术 4.join函数

  • 多线程

    多线程技术 多线程技术2 多线程应用 server client join函数

  • Python-day-18多线程

    1、多线程技术1 二、多线程技术2 三、多线程应用 四、jion函数

  • iOS-多线程相关

    本篇涵盖多线程解析、应用等. 1.iOS多线程--彻底学会多线程之『RunLoop』2.iOS多线程--彻底学会多...

  • day18-多线程

    recode 一、多线程技术1 二、多线程技术2 三、client 多线程应用 四、join函数 耗时操作

  • iOS性能篇——并行开发其实很简单

    概览 1.多线程 1.1 简介 1.2 iOS 多线程 2.NSThread 2.1 解决多线程阻塞问题 2.2 ...

  • Java多线程目录

    Java多线程目录 Java多线程1 线程基础Java多线程2 多个线程之间共享数据Java多线程3 原子性操作类...

  • iOS多线程技术方案

    多线程技术方案 目录 一、多线程简介 1、多线程的由来 2、耗时操作的模拟试验 3、进程和线程 4、多线程的...

  • iOS开发之多线程(5)—— Pthreads

    文集 iOS开发之多线程(1)—— 概述iOS开发之多线程(2)—— ThreadiOS开发之多线程(3)—— G...

  • iOS开发之多线程(4)—— Operation

    文集 iOS开发之多线程(1)—— 概述iOS开发之多线程(2)—— ThreadiOS开发之多线程(3)—— G...

网友评论

      本文标题:多线程2

      本文链接:https://www.haomeiwen.com/subject/ggxnkxtx.html