- 博客(6)
- 收藏
- 关注
原创 Java多线程随笔(4):线程通信
生产者消费者问题生产者消费者问题是在一个系统中,存在生产者和消费者两种角色,他们通过内存缓冲区进行通信,生产者生产消费者需要的资料,消费者把资料做成产品。synchronized只能实现线程同步,无法实现线程通信。Java的Object基类就提供了几个方法解决线程通信问题:注意:只能在同步方法或者同步块中使用解决方法1. 管程法...
2020-10-06 13:58:19 406
原创 Java多线程随笔(3):线程同步
线程同步多个线程访问同一个对象,并且某些线程还想修改这个对象,这个时候就需要线程同步;线程同步就是一种等待机制,多个需要同时访问此对象的线程进入这个对象的等待池,形成队列,等待前面线程使用完毕,下一个线程再使用;形成条件:队列+锁(synchronized)不安全案例...
2020-09-29 01:11:56 700
原创 Java多线程随笔(2):线程状态
探究Thread类1. lambda 表达式优势:避免匿名内部类定义过多 可以让代码更简洁 去掉没有意义的代码,只留下核心逻辑函数式接口:任何接口,如果只包含一个抽象方法,那么他就是一个函数式接口。对于函数式接口,我们可以通过lambda表达式来创建接口的对象。Runnable接口只有符合函数式接口,因此可以在实现Runnable接口时直接使用Lambda表达式。各种接口实现举例:public class Lambda { //3.静态内部类 ...
2020-09-27 23:45:25 496
原创 Java多线程随笔(1):线程的实现
进程和线程的基本概念进程是程序执行和资源分配的基本单位,线程是CPU调度和执行的基本单位;线程创建的三种方式1. 继承Thread类关于Thread类:Thread类继承Object类,同时实现了Runnable接口。实现方法:①声明一个类,继承Thread类,②重写run()方法,③创建线程对象,调用start()方法。不建议使用:OOP单继承局限性。public class TestThread1 extends Thread { @Override pub
2020-09-25 22:06:15 522
原创 回溯算法经典案例 1 ——N皇后 Java
问题分析N 皇后问题研究的是如何将 N 个皇后放置在 N×N 的棋盘上,并且使皇后彼此之间不能相互攻击。皇后的走法是:可以横直斜走,格数不限。因此要求皇后彼此之间不能相互攻击,等价于要求任何两个皇后都不能在同一行、同一列以及同一条斜线上。直观的做法是暴力枚举将 N 个皇后放置在 N×N 的棋盘上的所有可能的情况,并对每一种情况判断是否满足皇后彼此之间不相互攻击。暴力枚举的时间复杂度是非常高的,因此必须利用限制条件加以优化。显然,每个皇后必须位于不同行和不同列,因此将 N个皇后放置在 N×N
2020-09-14 20:46:19 1635
原创 经典排序算法1:冒泡排序,选择排序,插入排序,Shell排序
冒泡排序①比较相邻的元素。如果第一个比第二个大,就交换它们两个;②对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;③针对所有的元素重复以上的步骤,除了最后一个;④重复步骤1~3,直到排序完成。public static int[] bubbleSort(int []arr){ if(arr.length <= 1) return null; for(int i=0; i< arr.length
2020-08-27 21:26:17 622
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人