![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java多线程编程核心技术
baidu_974079012
初入IT界的小菜鸟
展开
-
Java多线程编程核心技术第二章笔记
第一节:方法中的变量不存在非线程安全问题,永远都是线程安全的,这是方法内部的变量是私有的特性造成的;“非线程安全”会在多个线程对同一个对象中的实例变量进行并发访问时发生,产生的后果就是“脏读”;“脏读”,就是说取到的数据其实是被更改过的;“线程安全”,就是已获得实例变量的值经过同步处理的,不会出现脏读的现象;当多个线程访问多个对象时,JVM就会创建多个锁;多个线程分别访问同一个类的多个...原创 2019-05-22 18:09:53 · 145 阅读 · 0 评论 -
Java多线程编程核心技术:第一章总结
进程:进程是操作系统结构的基础;是一次程序的执行;是一个程序及其数据在处理机上顺序执行时所发生的活动;是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位;线程:在进程中独立运行的子任务;一个进程正在运行时至少会有一个线程在运行,比如主线程就是由JVM创建的;Thread类实现了Runnable接口,它们之间具有多态关系;但是使用Thread类创建多线程时,最大的局限...原创 2019-05-17 16:28:37 · 149 阅读 · 0 评论 -
Java多线程编程核心技术第三章小笔记:线程间通信
第一节:等待/通知机制等待/通知机制出现的意义:减少CPU的资源浪费,而且还可以实现在多个线程间通信;线程等待方法:Object类的wait()方法,将当前线程置入“预执行队列”,必须在synchronized方法或者代码块中,如果不加入同步块就会出现这个异常:java.lang.IllegalMonitorStateException;;执行后,当前线程释放锁,如果调用wait方法时没有持...原创 2019-06-01 07:44:37 · 114 阅读 · 0 评论 -
Java线程部分join(long)跟sleep(long)的区别
首先看一下方法join(long)的内部是怎么实现的:源码: 可以看出:内部是调用wait方法来实现的,而wait方法具有释放锁的特点,从源码可以看出执行wait方法之后,当前线程的锁被释放,那么其他线程就可以 调用此线程中的同步方法了public final synchronized void join(long millis)throws InterruptedException {...原创 2019-06-01 07:54:15 · 278 阅读 · 0 评论 -
Java多线程编程核心技术第四章笔记:Lock的使用
第一节:使用ReentrantLock类JDK1.5提供此类,不但也可以实现线程之间同步互斥,并且在扩展功能上也更加强大,使用上也比synchronized更加的灵活;使用Condition实现等待/通知:代码链接:对比:condition实现生产者消费者模式:多对多交替打印:出现这种“有可能 B 连续”、“有可能 A 连续”,打印的情况就是因为程序中使用了一个Con...原创 2019-06-23 12:34:31 · 157 阅读 · 0 评论 -
Java多线程编程核心技术第五章笔记:定时器Timer
1、JDK库中Timer主要负责计划任务的功能,也就是说在指定的时间开始执行某一个任务;定时器五大方法的练习:1、schedule(TimeTask task,Date time):在指定的日期执行一次某一任务;在未来执行的效果:如果不将Timer改成守护线程,那么每创建一个就是启动了一个新的线程这个新启动的线程并不是守护线程,它一直会处于运行状态,如果将新创建的Timer改成守护线程,程...原创 2019-06-23 12:53:11 · 198 阅读 · 0 评论 -
Java多线程编程核心技术第六章笔记:单例模式与多线程;懒汉模式在多线程之下的好多种解决方式
1、立即加载/“饿汉模式”:没啥写的就不写了;太easy;2、延迟加载/“懒汉模式”延迟加载在多线程中根本不可能保持单例的状态,如示例:加载出了三个实例对象:3、懒汉模式的解决方案1:声明synchronized关键字;给getInstance方法加上synchronized关键字解决多线程下的懒汉模式问题这种方法的缺点:运行效率非常低下,因为他是同步运行的;4、懒汉模式的解决方...原创 2019-06-23 13:00:11 · 150 阅读 · 0 评论 -
Java多线程编程核心技术第七章笔记:拾遗增补
1、线程的状态:线程对象在不同的运行时期有着不同的状态,此信息就存在与Thread.State枚举类中;在调用与线程有关的方法后,会进入不同的线程状态;2、验证NEW RUNNABLE TERMINATED三个状态;3、验证TIMED_WAITING:此状态代表了执行Thread.sleep的方法,呈等待状态;4、验证BLOCKED:此状态出现在某个线程等待锁的时候:5、验证WA...原创 2019-06-23 13:07:50 · 198 阅读 · 0 评论