09 2022 档案
摘要:生产者消费者模式 在Java中,负责产生数据的模块是生产者,负责使用数据的模块是消费者,生产者消费者解决数据的平衡问题。即先有数据然后才能使用,没有数据时,消费者需要等待。 案例: package com.mokuiran.thread.pcquestion;public class PCTes
阅读全文
摘要:wait()与notify()的使用 package com.mokuiran.thread.pcquestion;//wait()的使用public class WaitTest { public static void main(String[] args) { String text = "
阅读全文
摘要:lock锁 重入锁(ReenturantLock) 重入锁(ReenturantLock)是Lock接口最常见的一种实现,顾名思义,它与synchronized一样是可重入的,在基本用法上,ReentrantLock也与synchronized很相似,只是代码实现方法上有些区别而且,另外一个很直接的
阅读全文
摘要:死锁 package com.mokuiran.thread;//死锁:多个线程狐仙抱着对方需要的资源,然后形成僵局public class DeadLock { public static void main(String[] args) { Makeup m1 = new Makeup(0,"
阅读全文
摘要:同步方法 注意:锁的量是变化的量,需要增删改的对象 同步方法与同步代码块的区别: 同步方法:锁的粒度粗,执行效率低; 同步代码块:锁的粒度细,执行效率高; 三大不安全案例解决方案: 案例1(火车站买票) package com.mokuiran.thread.synchronizedtest;//
阅读全文
摘要:锁的概述 参考视频:1-2 锁概述哔哩哔哩bilibili 线程安全问题的产生前提是多个线程并发访问共享数据 将多个线程对共享数据的并发访问转换为串行访问,即一个共享数据一次只能被一个线程访问。所就是复用这种思路来保障线程安全的 锁(lock)可以理解为对共享数据进行保护的一个许可证。对于同一个许可
阅读全文
摘要:守护(daemon)线程 package com.mokuiran.thread;//测试守护线程public class TestDaemon { public static void main(String[] args) { God god = new God(); You1 you1 =
阅读全文
摘要:线程优先级 package com.mokuiran.thread;//测试线程的优先级//注意:优先级低只是意味着获得调度的概率低,并不是优先级低就不会被调用了,这都是看CPU的调度//优先级高的并不一定就先执行,需要看CPU的调度public class TestPriority { publ
阅读全文
摘要:线程状态 视频参考:多线程11:线程停止哔哩哔哩bilibili 线程停止:stop() package com.mokuiran.thread;/*测试stop1.建议线程正常停止-->利用次数,不建议死循环2.建议使用标志位-->设置一个标志位3.不要使用stop或者destroy等过时或者J
阅读全文
摘要:静态代理 概念:目标对象类型的变量指向代理对象,然后调用方法的时候会执行代理对象的方法, 代理对象的方法里面重写或者调用了目标对象的方法,并且在方法执行前后添加了一些功能。 以结婚举例: package com.mokuiran.thread;/*静态代理模式总结:真实对象和代理对象都要实现同一个
阅读全文
摘要:Lambda表达式 参考视频:多线程10:Lamda表达式哔哩哔哩bilibili 理解函数式接口是学习java8 lambda表达式的关键所在 函数式接口的定义: 任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口; 对于任何函数式接口,我们可以通过lambda表达式来创建该接口的对象
阅读全文
摘要:实现Callable接口 案例: package com.mokuiran.thread;import org.apache.commons.io.FileUtils;import java.io.File;import java.io.IOException;import java.net.U
阅读全文
摘要:多线程 参考视频:多线程02:线程、进程、多线程哔哩哔哩bilibili 1.概念 2.线程创建 创建线程方式一:继承Thread类,重写run()方法,调用start开启线程 package com.mokuiran.thread;public class Demo extends Thread
阅读全文
摘要:数据流 参考视频:31常用IO流对象数据流数据输出流哔哩哔哩_bilibili 数据流将“基本数据类型与字符串类型”作为数据源,从而允许程序以与机器无关的方式 从底层输入输出流中操作Java基本数据类型与字符串类型。 DataInputStream和DataOutputStream提供了可以存取与机
阅读全文
摘要:管道流 参考视频:150701【掌握】管道流哔哩哔哩_bilibili java本身是属于多线程的编程语言,而多线程和多进程最大的区别在于:一个进程可以产生多个线程,那么这些线程都属于同一个进程中的组成单元,所以这些线程都可以直接共享给定进程里面的所有资源,包括数据,但是在java里面它强调不同的线
阅读全文