精华内容
下载资源
问答
  • java并发实战

    2018-09-29 17:05:06
    java并发实战
  • Java并发实战

    2018-05-24 16:27:13
    该书通过对常见的并发场景进行分析,通过场景+实践的模式使得对并发的学习更加的容易上手,清晰易懂
  • 这就是最正宗的《Java 并发编程实战》带目录 用福昕阅读器打开查看特别的清晰
  • java并发实战编程
  • java并发实战教程

    2018-03-29 19:10:38
    超全的java并发编程实战文档,有源码有实例,是java初学者,想提高自己编程水平的宝典。
  • Java并发实战》阅读笔记

    《Java并发实战》阅读笔记

    这里写图片描述

    展开全文
  • java并发实战读书笔记

    2017-08-09 22:48:10
    java并发实战第三章主要讲述关于对象共享的问题 如下: 一.失效数据: 失效数据可能不会同时出现:一个线程可能获取一个新值另一个线程可能获得一个已经失效的值。失效数据可能导致活跃性问题和安全性问题 为了解决...

    第三章关于对象共享

    java并发实战第三章主要讲述关于对象共享的问题

    如下:

    一.失效数据:

    失效数据可能不会同时出现:一个线程可能获取一个新值另一个线程可能获得一个已经失效的值。失效数据可能导致活跃性问题和安全性问题

    为了解决失效数据我们可以对变量的get和set方法进行同步。

    二.最低安全性:

    线程没有同步的情况下读取变量,可能得到一个失效值,但是这个值可以使有之前某个线程设置的值,这样的安全保证被称为最低安全性。

    三.非原子的64位操作:

    对于非volatile类型的long和double变量,jvm允许将64位读操作或写操作分解为两个32位的操作。读取一个volatile类型的long变量,读写操作如果在不同的线程中执行,有可能发生读取一个值的高32位和另一个值得低32位。因此共享long和double变量应该使用volatile关键字保证可见性。

    四加锁与可见性:

    加锁不仅保证了互斥行为,还保证了内存可见性,为保证可见性,所有执行读操作或者写操作的线程都必须在同一个锁上做同步。

    volatile变量(重点内容,面试经常会被问的多线程知识之一,感觉本书介绍的很详细):

    volatile变量是一种稍弱的同步机制,确保将变量的更新操作通知到其他线程(可见性),声明为volatile后建议与运行时都会注意这个变量是共享的,因此不会把该变量操作与其他内存操作一起重排序(不了解什么是重排序(╯‵□′)╯︵┻━┻),因为访问volatile变量不会执行加锁操作因此不会使线程阻塞,从内存角度来说写入volatile变量相当于退出同步代码块,读取操作相当于进入同步代码块。使用volatile变量时应该注意:1.对变量的写入操作不依赖变量的当前值,或者确保只有单个线程更新变量值2.该变量不会与其他变量一起纳入不变形条件中(不太懂什么意思=.=)3.访问变量时不需要加锁

    五发布与逸出


    关于共享对象破坏类的封装性

    六ad-hoc线程封闭

    线程的封闭性完全由程序实现来承担,存在脆弱性

    七栈封闭

    只能局部变量访问对象

    八ThreadLocal

    使线程中的某个值与保存值得对象连接起来,常用于对可变的单实例变量或全局变量进行共享,如果需要将一个单线程程序一直到多线程环境,通过将全局变量转化为

    ThreadLocal对象,可以维持线程安全性,如果将应用程序范围的缓存设置为线程的局部缓存name不会有 



    展开全文
  • java并发编程实战,对理解java的多线程机制有很大的帮助
  • Java并发实战汇总

    2020-12-31 17:12:54
    Java内存模型(解决可见性和有序性问题):https://limeng.blog.csdn.net/article/details/109262247 互斥锁:https://limeng.blog.csdn.net/article/details/109551131 死锁:...
    展开全文
  • java并发实战第六章

    2017-09-25 21:44:49
    最近在看深入理解java虚拟机与java并发实战两本书感觉作者写的还是很好的,奈何水平有限,所以打算继续研究并做好笔记进行总结 第六章围绕任务执行来讲述的,通常应用程序把工作分解到多个任务中,这样可以简化程序...

    最近在看深入理解java虚拟机与java并发实战两本书感觉作者写的还是很好的,奈何水平有限,所以打算继续研究并做好笔记进行总结

    第六章围绕任务执行来讲述的,通常应用程序把工作分解到多个任务中,这样可以简化程序的组织结构,并提高程序的并发性,围绕任务执行应该先找到清晰地任务边界,理想情况下,各任务之间应该不相互依赖,正常负载下,应用程序应该具有良好的响应性和吞吐量。因此在构造任务策略的时候应尽可能的围绕这两点进行。

    串行执行任务

    一般情况下,最简单的任务执行策略是串行的执行各任务,但是这种执行效率很低,这种执行方式一般对cpu等资源的利用率非常低,因而无法提供较高的吞吐量。

    为每个任务显式的创建线程

    ①优点:

    显式的为每个任务创建线程可以实现更高的响应性,解决了串行任务资源利用率低的问题,利用此方法将任务处理过程从主线程分离出来。

    ②缺点

    线程生命周期开销非常高,系统在创建和销毁线程时都会有非常大的开销,线程在运行的过程中也会消耗系统资源,如果线程数多余处理器处理数大量的线程会被闲置从而占用更多的内存资源,因而创建的线程以保证处理器足够忙碌为宜不应过多也不应过少,过多的线程线程会抛出outofMemoryError异常从而影响应用程序的稳定性

    2.Executor框架

    线程池

    为了解决上述两种执行任务的缺点,通常使用线程池来简化线程池的管理工作,线程池是管理一组同构线程(多个相同类型的参与完成某一件任务的线程)的一个资源池,java类库提供了一个灵活的线程池和一些有用的配置,通常可以创建的线程池有以下几类:

    newFixedThreadPool:创建一个固定长度的线程池,每次提交一个任务就创建一个线程,直到达到线程池的上限

    newCachedThreadPool:创建一个可缓存的线程池,当请求任务过小,回收空闲的线程,任务过大增加线程数量

    newSingleThreadPool:创建单个工作者线程池

    newScheduledThreadPool:创建一个固定任务,并可以延时或定时执行任务的线程池。

    Executor框架

    在java并法包中提供了灵活的线程池实现作为Executor框架的一部分。Executor框架通常实现Executor接口,Executor框架可以支持多种任务执行策略,有效的任务的提交与执行解耦开Executor一般基于生产者消费者模式提交的任务相当于生产者,执行的任务相当与消费者,通常Executor使用runnable作为基本的任务表示形式但是Runnable任务没有返回值或者抛出一个受检查异常,用Callable通常可以解决这类问题。Executor框架中Future表示一个任务的生命周期,并提供了相应方法判断任务是否已经完成或取消,Future通常用get方法来获取任务的执行状态。Executor框架中如果提交了一组计算任务并且希望得到计算结果,那么可以保留每个任务的Future,然后反复执行get方法,但是这种方法太繁琐,通常使用CompletionService,完成服务将Executor框架和阻塞队列的功能融合在一起,从而可以将任务提交到一个队列并用take或poll方法得到结果。但是有些任务无法再指定时间内完成因而可以为线程指定时限,任务超时后抛出超时异常并终止,注意在这种情况下任务应该立即终止,避免任务执行过长浪费更多的资源。

    Exector生命周期

    Executor扩展了ExecutorService接口从而解决服务的生命周期问题,一般ExecutorService提供的生命状态有三种包括运行关闭和终止

    延迟任务与周期任务

    延迟任务和周期任务一般由Timer类管理,但是此类存在一些缺陷他只会为所有定时的任务创建一个线程并且TimerTask会抛出一个未检查异常因此可以考虑使用ScheduledThreadExecutor代替。

    展开全文
  • java并发实战中文文档

    2018-12-11 14:37:50
    目前找到的文档通常是不清楚的,也没有目录,看起来费时费力;因此上传一个高质量的文档,方便大家;希望大家能把更多时间用在开发上面,而不是受限于到处找资料,白白浪费时间
  • 本课程可用于面试以及提升自己的Java技能 本课程使用Java 16进行教学,主要讲解Java中的并发技术,主要内容如下:   1.  线程管理(线程创建、运行、线程中断、线程休眠、守护进程、用工厂创建线程等) 2....
  • 决定在工作之余,好好学习《java并发实战》这本书,欢迎各位大神前来吐槽和分享。 线程带来的风险问题 1、安全性问题 当用户在执行如下程序是会产生安全性问题: public class UnSafeSquence{ private int ...
  • java并发实战-1

    2019-03-04 23:23:20
    1.实战的第一阶段是什么,是将学到的那些东西变成 工作中的一个个优化点 2.关于优化点:我们的目的是分割任务,分析出任务的那些阶段是可以并发去完成,那些阶段可以缩短时间,以这个为目的来 达到优化。 ...
  • 以下内容截取自《Java并发编程实战》 作者 Brian Goetz
  • java并发编程实战第一部分总结笔记 1.可变状态是至关重要的 所有的并发问题都可以归结为如何协调对并发状态的访问。可变状态越少,就越容易确保线程安全性。 2.尽量将域声明为final类型,除非需要他们是可变的。 3....
  • java并发实战手册第三章---线程同步辅助类简介 在第二章中我们学习了同步和临界区的概念。并且讨论了多个并发任务共享一个资源时的同步情况。这个共享资源可以是一个对象也可以是一个对象的一个属性。访问共享资源的...
  • java并发编程实战P58 私有构造函数捕获:私有构造函数进行线程安全地对象复制 转发:http://atbug.com/private-constructor-capture-idiom/ /** * 将拷贝构造函数实现为this(p.x, p.y),那么会产生竞态条件...
  • java并发实战(一)

    2016-12-21 16:16:00
    2019独角兽企业重金招聘Python工程师标准>>> ###多线程优势 ####1....####2....Servlet(单例多线程)开发...java并发编程实战第一章 转载于:https://my.oschina.net/u/200745/blog/809715
  • Java中的公平锁和非公平锁实现详解 Java中的公平锁和非公平锁实现详解 自旋锁原理及java自旋锁 自旋锁原理及java自旋锁 join() 的示例和作用 join() 的示例和作用 三大性质总结:原子性,有序性,可见性...
  • java并发实战》- 关于this引用溢出

    千次阅读 2018-04-26 14:49:14
    书中3.2中关于this引用溢出例子:public class ThisEscape {  public ThisEscape(EventSource source) {  source.registerListener(new EventListener() {  public void onEvent(Event e) { ...
  • 需求分析: 总结自己项目中用到多线程的地方,之前一级考试系统,在考生交卷的过程中,需要做很多事情,导致交卷过程很慢...介绍callable和futuretask:1.callableCallable位于java.util.concurrent包下,它也是一个接
  • @ThreadSafe public class CountingFactorizer implements Servlet { private final AtomicLong count = new AtomicLong(0); public long getCount() {return count.get();} public void service(ServletRequest ...
  •        

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,312
精华内容 2,924
关键字:

java并发实战

java 订阅