多线程
作者:互联网
多线程
创建线程
-
thread class继承thread类
-
Runnable接口,实现Runnable接口
-
Callable接口,实现Callable接口
thread
Runnable
Callable
代理模式
Lambda
为什么用:
-
避免匿名内部类定义过多
-
可以让你的代码看起来很简洁
-
去掉了一堆没有意义的代码,只留下核心的逻辑
任何接口,如果只包含唯一一个抽象方法,那它就是一个函数式接口。
public interface Runnable{
public abstract void run();
}//函数式接口(只有一个抽象方法)
对于函数式接口,我们可以通过lambda表达式来创建该接口对象
线程操作
停止线程:不推荐使用JDK提供的stop()、destroy()方法,推荐线程自己停下来,简易使用一个标志位进行终止变量当flag=false,则终止线程运行
线程休眠:每个线程都有一把锁,睡眠不会释放锁。
线程礼让:礼让线程,让当前正在执行的线程停止,但不阻塞。将线程从运行状态转为就绪状态,让CPU从新调度,礼让不一定成功,看CPU心情。
线程强制执行:join合并线程,代线程执行完成后,再执行其他线程,其他线程阻塞。可以想象成插队。
线程优先级;现成的优先级用数字表示,范围从1~10,使用getPriority()、setPriority()改变或获取优先级。越高限制性的可能性就越大。但不一定就肯定先执行。
守护线程:线程分为用户线程和守护线程,虚拟机必须保证用户线程执行完毕,虚拟机不用等待守护线程执行完毕
队列同步:队列+锁
方法里面需要修改的内容才需要锁,锁的太多,浪费资源。
死锁
Lock锁
lock与snychronized的对比
生产者与消费者问题
线程池
标签:Runnable,优先级,thread,接口,Callable,线程,多线程 来源: https://www.cnblogs.com/doumingzhan/p/16117950.html