随笔分类 - 多线程
摘要:线程 锁 ThreadLocal https://blog.csdn.net/qq_40525480/article/details/129129550?spm=1001.2014.3001.5502 创建线程的方法 线程调度、线程安全、Volatile 线程池 Java内存模型(JMM)
阅读全文
摘要:https://blog.csdn.net/jjwwmlp456/article/details/72771849
阅读全文
摘要:摘自:https://www.cnblogs.com/wangchuang/p/5737188.html 任务和线程的区别: 1、任务是架构在线程之上的,也就是说任务最终还是要抛给线程去执行。 2、任务跟线程不是一对一的关系,比如开10个任务并不是说会开10个线程,这一点任务有点类似线程池,但是任务
阅读全文
摘要:死锁: 可以认为是两个线程或进程在请求对方占有的资源。 饿死:一个线程在无限地等待另外两个或多个线程相互传递使用并且用不会释放的资源。 出现以下四种情况会产生死锁: 1,相互排斥。一个线程或进程永远占有共享资源,比如,独占该资源。 2,循环等待。例如,进程A在等待进程B,进程B在等待进程C,而进程C
阅读全文
摘要:Callable和Runnable很类似,主要区别在于Callable能返回运行结果,能抛出异常。 执行Callable方式,需要Future的实现类的支持,用于接收运算结果。FutureTask是Future接口的实现类。 public class TestCallable { public st
阅读全文
摘要:其他理解: 不应该只把它当作一个传参工具,它本身是为线程安全和某些特定场景的问题而设计的。 诡异的ThreadLocal最难琢磨的是“作用域”,尤其是在代码设计之初非常乱的情况下,假设再添加很多ThreadLocal。系统就会逐渐变成神龙见首不见尾的情况。使用ThreadLocal,不要简单粗暴地多
阅读全文
摘要:是什么:等工作来了就工作 为什么:启动线程是很花费时间的工作,ThreadPool将重复使用线程,资源再利用也作为主题之一。 1.用此模式时还可以如何优化: 1.1承载量(capacity): 简单来说就是worker与request的数量要如何去平衡。 worker多了,浪费内存,worker少了
阅读全文
摘要:通过此练习了解了线程中run()方法没有参数如何传参。 可以看出程序使用了匿名内部类。 尝试一: 以为不就是把Helper类extendsThread每次创建一个它然后启动吗。 碰到瓶颈1: 线程中没有带参数的run方法(如果想要实现带参数的run方法:1、定义线程内变量2、在继承thread的时候
阅读全文
摘要:一般可以把独立运行的程序看作一个进程,进程之间是相互独立存在的,像qq音乐,谷歌浏览器一样他们都是独立存在的,而且互不影响。 进程想要执行任务必须依赖于线程,进程中的最小执行单位是线程,进程中至少有一个线程。 进程与线程的最大区别在于内存能否共享:进程的内存空间是各种独立的,线程是共享内存的。 第二
阅读全文
摘要:概述:对每个命令或请求分配一个线程,由这个线程执行工作。 不像是一个有实权的将军,而像是一个传递消息的太监。 when: 原理进一步解析: 利用了调用方法与启动线程两个操作,实现“传送异步消息”的操作。 示例: 程序运行结果: request传个话就走了,不会等待响应结果而直接退出。 两个很重要的时
阅读全文
摘要:假设abcd在读ef在写,a关锁的时候bcd可以读,ef在等待中,a关完锁之后,e去写,bcd读不了了,bcd和f都在等待中。
阅读全文
摘要:https://blog.csdn.net/tanga842428/article/details/52789801 http://www.cnblogs.com/gongchengshidemeng/p/9420096.html https://www.cnblogs.com/shan1393/p
阅读全文
摘要:线程被interrupt的情况。 Before/After pattern模式 注:execute()是被synchronized的。 我以为被syn的方法内部没有改变,代码执行逻辑也没有改变,就不会有问题。 然而: 这道题答案与try有关,进入了try就一定会有finally 因为能改变四个变量的
阅读全文
摘要:定义: 当线程“读取”实例的状态时,实例的状态不会改变,因此可以被多个线程读取。而当写入的时候,实例的状态会改变,其他线程不可以进行读取或写入。 道理上如何实现: 用一个锁,读取的时候要获取读取的锁。写入的时候,要获取写入的锁。 优点: 一般来说,进行共享互斥会使程序性能变差,但将写入的共享互斥与读
阅读全文
摘要:—————————————————示例———————————————————————
阅读全文
摘要:Data类 SaverThread类 ChangerThread类 Main类 ———————————————————示例结束—————————————————— Balking Pattern的所有参与者(只有一个): 何时使用: 不需要刻意去执行的时候 不想等待警戒条件成立的时候 警戒条件只有第
阅读全文
摘要:定义: 当现在并不适合马上执行某个操作,要求想要执行该操作的线程等待。 Request:表示“请求”的类。 一个只有存放名字的类 private final String name;的get和set方法 RequestQuery:依次存放请求以待使用的类。 getRequest和putRequest
阅读全文
摘要:Immutable Pattern是指那些有着能够保证实例状态绝不会改变的类(immutable类),在访问这样的实例中,可以省去使用共享机制所会浪费的时间。如果能妥善使用可以提高程序性能。 思考成对的mutable类与immutable类【执行性能】 setter还是有被用到,可能是在:1.get
阅读全文
摘要:如果不使用Single Threaded Exception Pattern: 门类: 人类: main: 执行结果: 为什么会有broken(损坏): Gate是非线程安全的类。 测试并无法证明安全性,当测试次数不够、时间点不对就可能检查不到问题: 调试的消息也不可靠: 由多个人仔细阅读程序源代码
阅读全文
摘要:1.安全性 不损坏对象 2. 生存性 进行必要的处理,有时候会和安全性相驳。 3.复用性 可再利用类 4.性能
阅读全文