美文网首页
2019-04-29

2019-04-29

作者: 纪绘 | 来源:发表于2019-04-29 16:18 被阅读0次

01线程知识回顾

创建线程的方式

1.写一个子类继承Thread,重写run方法,创建对象调用start开启线程

2.创建一个Runnable的对象,然后借助Thread的构造方法进行创建线程,通过start调用开启线程。

多线程处理一个资源的时候,会出现资源混乱【线程的安全问题】

如何解决线程的安全问题?

只要保证资源在操作时只有一个线程占用,可以使用同步进行实现

同步方式:

1.同步代码块【synchronized】

2.同步方法【synchronized】

3.Lock锁【reentrantLock】

线程的状态

1.NEW

2.Runnable

3.Blocked

4.Waitting【无线等】wait()释放锁

5.Timed_Waitting

6.Terminated

02线程间的通信:等待唤醒机制实现线程间通信

等待唤醒就是:wait/notify notifyAll

等待唤醒的方法都来自Object

public void wait():让线程进入等待,释放锁

public void notifyAll():能唤醒所有等待中的线程

这些方法都是用锁来调用

使用这些方法的时候注意:

1)这些方法的调用,多个线程必须使用同一个锁调用

2)调用方法必须在同步的代码中

如果一个线程进入了无限等待,一定需要其他的线程才能去唤醒该等待的线程

03Lambda表达式的初步使用

Lambda 面向方法的编程

Lambda是匿名内部类的一个替代品

如果一个地方可以使用匿名内部类,可以使用其对应的lambda表达式替换。

匿名内部类:

1)好处:格式鲜明,语法结构鲜明,更容易看懂代码。

2)弊端,语法太复杂

lambda表达式:

1)好处:语法简洁,书写方便

2)弊端:可读性较差

04Lambda表达式的格式分析

Lambda表达式是匿名内部类的替代品,匿名内部类主要就是实现了接口的抽象方法,格式方法。

如果使用Lambda表达式去实现一个接口的抽象方法,格式:

1.参数列表

2.箭头

3.方法体

格式:(参数列表)->{方法体}

就是该抽象方法的具体实现,和匿名内部类中实现的方法是一回事

==Lambda表示只适用于接口,而且这个接口必须只能有一个抽象方法。==

相关文章

网友评论

      本文标题:2019-04-29

      本文链接:https://www.haomeiwen.com/subject/pbuynqtx.html