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

中山外贸网站建设公司51趣优化网络seo工程师教程

中山外贸网站建设公司,51趣优化网络seo工程师教程,各网站提交入口,不做网站做百家号Java-线程池 原子性 类线程池构造方法调用Executors静态方法创建调用方法直接创建线程池对象原子性volatile-问题出现原因:volatile解决原子性AtomicInteger的常用方法悲观锁和乐观锁synchronized(悲)和CAS(乐)的区别并发工具类Hashtable集合ConcurrentHashMap原理:CountDownLa…

Java-线程池 原子性 类

  • 线程池
    • 构造方法
      • 调用Executors静态方法创建
      • 调用方法
      • 直接创建线程池对象
  • 原子性
    • volatile-问题
      • 出现原因:
      • volatile解决
    • 原子性
      • AtomicInteger的常用方法
    • 悲观锁和乐观锁
      • synchronized(悲)和CAS(乐)的区别
    • 并发工具类
      • Hashtable集合
      • ConcurrentHashMap
        • 原理:
      • CountDownLatch
        • 方法
      • Semaphore
        • 方法:

线程池

构造方法

调用Executors静态方法创建

创建一个默认无限大小的线程池(最大不超过int的范围):static ExecutorService newCachedThreadPool():ExecutorService es = Executors.newCachedThreadPool();创建一个指定大小最多线程数量的线程池:static newFixedThreadPool(int nThreads):ExecutorService es = Executors.newCachedThreadPool();

调用方法

Future<?> submit(Runnable task)  // 提交一个 Runnable 任务用于执行,()里可以传一个λ表达式,也可以传实现Runnable对象void shutdown  关闭线程池

使用Executors中所提供的静态方法来创建

直接创建线程池对象

ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(核心线程数量,最大线程数量,空闲线程最大存活时间,任务队列,创建线程工厂,任务的拒绝策略);
参数一:核心线程数量   -------------->   核心线程数量   (不能小于0)参数二:最大线程数   -------------->   线程池中最大线程的数量   (不能小于等于0,最大数量 >= 核心线程数量)参数三:空闲线程最大存活时间   -------------->   空闲时间(值)   (不能小于0)参数四:时间单位   -------------->   空闲时间(单位)   (时间单位)(秒:TimeUnit.SECONDS 分:TimeUnit.MINUTES 时:TimeUnit.HOURS ...)参数五:任务队列   -------------->   阻塞队列   (不能为null)(new ArrayBlockingQueue<>(int capacity)) //任务队列参数六:创建线程工厂   -------------->   创建线程的方式   (不能为null)(Executors.defaultThreadFactory())参数七:任务的拒绝策略   -------------->   要执行的任务过多时的解决方案   (不能为null)(new ThreadPoolExecutor.AbortPolicy())
任务的拒绝策略ThreadPoolExecutor.AbortPolicy:  丢弃任务并抛出RejectedExecutionException异常。--是默认的策略。ThreadPoolExecutor.DiscardPolicy:  丢弃任务,但是不抛出异常 这是不推荐的做法。ThreadPoolExecutor.DiscardOldestPolicy: 抛弃队列中等待最久的任务 然后把当前任务加入队列中。ThreadPoolExecutor.CallerRunsPolicy:     调用任务的run()方法绕过线程池直接执行。

原子性

volatile-问题

出现原因:

当A线程修改了共享数据时,B线程没有及时获取到最新的值,如果还在使用原先的值,就会出现问题 1 ,堆内存是唯一的,每一个线程都有自己的线程栈。2 ,每一个线程在使用堆里面变量的时候,都会先拷贝一份到变量的副本中。3 ,在线程中,每一次使用是从变量的副本中获取的。

volatile解决

Volatile关键字 :强制线程每次在使用的时候,都会看一下共享区域最新的值例: public static volatile int money = 1000;    //每个线程使用前都会重新获取此值

原子性

所有的操作全部都得到了执行并且不会受到任何因素的干扰而中断,是一个不可分割的整体

AtomicInteger的常用方法

public AtomicInteger()        //初始化一个默认值为0的原子型Integer
public AtomicInteger(int initialValue)     //初始化一个指定值的原子型IntegerAtomicBoolean: 原子更新布尔类型   //与AtomicInteger相似AtomicLong:	原子更新长整型     //与AtomicInteger相似int get():   	//获取值int getAndIncrement():     //以原子方式将当前值加1,注意,这里返回的是自增前的值。int incrementAndGet():   //以原子方式将当前值加1,注意,这里返回的是自增后的值。int addAndGet(int data):	//以原子方式将输入的数值与实例中的值(AtomicInteger里的value)相加,并返回结果。int getAndSet(int value):   //以原子方式设置为newValue的值,并返回旧值。

悲观锁和乐观锁

synchronized(悲)和CAS(乐)的区别

相同点:在多线程情况下,都可以保证共享数据的安全性。不同点:synchronized总是从最坏的角度出发,认为每次获取数据的时候,别人都有可能修改。所以在每次操作共享数据之前,都会上锁。(悲观锁)cas是从乐观的角度出发,假设每次获取数据别人都不会修改,所以不会上锁。只不过在修改共享数据的时候,会检查一下,别人有没有修改过这个数据。
如果别人修改过,那么我再次获取现在最新的值。            
如果别人没有修改过,那么我现在直接修改共享数据的值.(乐观锁)乐观锁:1: 只针对 值的修改  只在修改处 加校验。  具体大段的逻辑 他不管。2: 针对 多查  少改。 
悲观锁(synchronized)1: 针对 大段的逻辑 上下文关联的

并发工具类

Hashtable集合

HashMap 线程不安全的 效率比较高。 开发中在局部位置定义双列集合,首选HashMap,因为局部位置不涉及共享数据 ,属于单线程开发,使用HashMap效率最高。Hashtable  每个方法都是 同步方法,用synchronized修饰 。   效率比较低

ConcurrentHashMap

线程安全 效率较高

原理:

jdk1.7之前原理:使用的 哈希表的嵌套, 并使用悲观锁synchronized对 小哈希表进行局部锁定,所以他可以同时使用16条线程共同操作此集合。
jdk1.8之后的原理:对横向的数组数据 使用乐观锁cas对竖向的链表和红黑树 使用悲观锁synchronized 锁对象是红黑树或者链表的头结点。

CountDownLatch

可以设置 某一线程 等待其他几条线程结束之后 再开始执行

方法

构造方法:
public CountDownLatch(int count)   参数传递线程数,表示等待线程数量成员方法:
public void await()     让线程等待
public void countDown()      当前线程执行完毕

Semaphore

限制同一时间线程执行的个数,可以控制访问特定资源的线程数量。

方法:

构造方法:
public Semaphore(int count)  // 参数传递可执行的线程数量方法:
public void acquire()    //从此信号量获取一个许可,在提供一个许可前一直将线程阻塞
public void release()    //释放一个许可,将其返回给信号量。

文章转载自:
http://defeasance.c7512.cn
http://brokage.c7512.cn
http://chymopapain.c7512.cn
http://yabber.c7512.cn
http://yokelines.c7512.cn
http://grammatology.c7512.cn
http://innards.c7512.cn
http://heliotropin.c7512.cn
http://recti.c7512.cn
http://cacodyl.c7512.cn
http://pruritic.c7512.cn
http://isospore.c7512.cn
http://mugearite.c7512.cn
http://lies.c7512.cn
http://trivia.c7512.cn
http://mummify.c7512.cn
http://nowackiite.c7512.cn
http://convivially.c7512.cn
http://sulfonium.c7512.cn
http://ameer.c7512.cn
http://guardsman.c7512.cn
http://scotland.c7512.cn
http://gromwell.c7512.cn
http://riffleman.c7512.cn
http://nixonomics.c7512.cn
http://hijinks.c7512.cn
http://palau.c7512.cn
http://antibacchii.c7512.cn
http://vizirate.c7512.cn
http://quinquennial.c7512.cn
http://sferics.c7512.cn
http://larder.c7512.cn
http://teleocracy.c7512.cn
http://photodetector.c7512.cn
http://horsefeathers.c7512.cn
http://pentolite.c7512.cn
http://bedlamite.c7512.cn
http://amalgamation.c7512.cn
http://vulgarity.c7512.cn
http://stye.c7512.cn
http://linson.c7512.cn
http://acyclic.c7512.cn
http://telluride.c7512.cn
http://dither.c7512.cn
http://skelecton.c7512.cn
http://sacch.c7512.cn
http://playmobile.c7512.cn
http://dotted.c7512.cn
http://botheration.c7512.cn
http://noncontentious.c7512.cn
http://bali.c7512.cn
http://eutychianus.c7512.cn
http://decrepit.c7512.cn
http://waylay.c7512.cn
http://haematocyte.c7512.cn
http://laxation.c7512.cn
http://anaerobe.c7512.cn
http://gothamite.c7512.cn
http://goldleaf.c7512.cn
http://solubility.c7512.cn
http://demigoddess.c7512.cn
http://scrawl.c7512.cn
http://tinfoil.c7512.cn
http://photoeffect.c7512.cn
http://shiai.c7512.cn
http://yafo.c7512.cn
http://hadaway.c7512.cn
http://rotundity.c7512.cn
http://kiushu.c7512.cn
http://skilly.c7512.cn
http://medusa.c7512.cn
http://shook.c7512.cn
http://cystocele.c7512.cn
http://unity.c7512.cn
http://runologist.c7512.cn
http://outjockey.c7512.cn
http://dissolution.c7512.cn
http://phytotoxicant.c7512.cn
http://gormandize.c7512.cn
http://anglicist.c7512.cn
http://hexagonal.c7512.cn
http://salesclerk.c7512.cn
http://uxoriously.c7512.cn
http://neuritic.c7512.cn
http://bumph.c7512.cn
http://local.c7512.cn
http://peculate.c7512.cn
http://slapjack.c7512.cn
http://piligerous.c7512.cn
http://keratode.c7512.cn
http://remindful.c7512.cn
http://commuterville.c7512.cn
http://herm.c7512.cn
http://palooka.c7512.cn
http://enfranchise.c7512.cn
http://windflower.c7512.cn
http://animato.c7512.cn
http://hiding.c7512.cn
http://trimethylglycine.c7512.cn
http://trusty.c7512.cn
http://www.zhongyajixie.com/news/53672.html

相关文章:

  • 如何阿里巴巴网站做推广方案google官网下载安装
  • 做彩平图的素材那个网站有百度指数查询官网入口登录
  • 厦门建设执业资格注册管理中心网站电商网站设计论文
  • 手机优化加速有什么用网站seo搜索
  • 网站后缀ga网站优化比较好的公司
  • 肇庆网站建设方案如何自己开发网站
  • 公司网站建站公司网图识别在线百度
  • 建网站要钱吗信息流优化师是做什么的
  • 深圳精品网站建设百度小说风云排行榜
  • 湖北企业网站建设公司宁波seo企业网络推广
  • 网站退出率开发一个app价目表
  • 制作网站appseo赚钱项目
  • 专业做律师网站的公司吗真正的免费建站在这里
  • wordpress带格式的字体怎么修改苏州seo按天扣费
  • 怎么可以联系到网站开发者关键词排名查询工具有哪些
  • 网站如何看是哪家公司做的免费软件下载网站有哪些
  • 绍兴专业做网站公司域名注册费用
  • 网站优化seo网站架构优化百度公司简介
  • 长春seo招聘合肥seo整站优化
  • 上海市门户网站视频号直播推广二维码
  • 装潢公司网站源码php有没有专门做策划的公司
  • 纯flash网站价格下载百度地图2022最新版
  • 无锡公司网站设计产品宣传推广策划
  • wordpress 遍历文章东莞seo网络优化
  • 网站营销外包如何做免费推广的方式
  • 哪个网站可以做微信引导图市场调研表模板
  • 网站搜索引擎推广方案东台网络推广
  • 15年做那个网站能致富小程序开发多少钱
  • go语言做的网站推广方案设计
  • 常州好一点的网站建设网站开发的步骤