【223天】黑马程序员27天视频学习笔记【Day25-中】
叨叨两句
今天累P了,熬夜发个简单版,一定保证不断更
写的太简单过不了审核,晕死。。重新加点内容
25-04:两个线程间的通信
public class test { public static void main(String args) { final Printer p = new Printer(); new Thread() { public void run() { while(true) { p.print1(); } } }.start(); new Thread() { public void run() { while(true) { p.print1(); } } }.start(); } } class Printer { private int flag = 1; public void print1() throws InterruptedException { synchronized(this) { if(flag != 1) { this.wait(); } System.out.print("黑"); System.out.print("马"); System.out.print("程"); System.out.print("序"); System.out.print("员"); System.out.print("\r\n"); flag = 2; this.notify(); } } public void print2() throws InterruptedException { synchronized(this) { if(flag != 2) { this.wait(); } System.out.print("传"); System.out.print("智"); System.out.print("播"); System.out.print("客"); System.out.print("\r\n"); flag = 1; this.notify(); } } }
25-05:三个或三个以上线程间的通信
- if语句的判断和while语句的判断区别:while是循环判断,而if不是。
- wait()语句在哪里等待,在哪里醒来
- 即便用notify唤醒了别的线程,当前线程也依然可能会有执行权。
- 控制台内容有限,内容太多会有部分内容被“顶”出去。
25-06:多线程间通信需要注意的问题
- 在同步代码块中,用哪个对象锁,就用哪个对象调用wait方法。
- 为什么wait方法和notify方法定义在Object类中?因为锁对象可以是任意对象
sleep方法与wait方法的区别?
- sleep方法必须传入参数,参数就是时间,到时间自动醒来。不释放锁。
- wait方法参数可传可不传,传入就是在参数时间后结束等待,不传入参数就是不唤醒就不醒来。释放锁。
25-07: JDK1.5新特性互斥锁
同步
- 使用ReentrantLock类的lock和unlock方法替代synchronize方法
通信
- 使用ReentrantLock类的newCondition()方法可以获取Condition对象。
- 需要等待的时候使用Condition的await方法,唤醒的时候使用signal方法
- 不同的线程使用不同的Condition,这样就能区分唤醒的时候找哪个线程。
25-08:线程组的概述和使用
- Java中用ThreadGroup来表示线程组,它可以对一批线程进行分类管理,Java允许程序直接对线程组进行控制。
默认情况下,所有的线程都属于主线程组(main)
- public final ThreadGroup getThreadGroup()【通过线程对象获取他所属的组】
- public final String getName()//通过线程组对象获取他组的名字
我们也可以给线程设置分组
- ThreadGroup(String name)创建线程组对象并给其赋予名字。
- 创建线程对象
- Thread(ThreadGroup group,Runnable target,String name)
- 设置整组的优先级或者守护线程
25-09:线程的五种状态
- 新建、就绪、运行、阻塞、死亡
相关推荐
kukelook 2020-04-22
程序员官方BLOG 2015-07-10
Java填坑之路 2019-09-08
ioriguojun 2013-01-25
madmanG 2016-03-13
ellende 2019-06-25
韩世雷程序员 2019-06-25
Java填坑之路 2019-06-25
taoxiuyi0 2019-06-21
javaMerea 2019-06-21
taoxiuyi0 2019-06-21
叨逼叨两句收拾收拾~18-11:Collection中的常见方法sortpackage com.test.demo001;System.out.println; //根据默认排序结果获取集合中的最大值
javaMerea 2019-06-21
javaMerea 2019-06-21
韩世雷程序员 2019-06-21
taoxiuyi0 2019-06-21
ellende 2019-06-21
韩世雷程序员 2019-06-21
韩世雷程序员 2019-06-21
ellende 2019-06-21