其他分享
首页 > 其他分享> > 多线程

多线程

作者:互联网

多线程

创建线程

  1. thread class继承thread类

  2. Runnable接口,实现Runnable接口

  3. Callable接口,实现Callable接口

image-20220317172813048

thread

Runnable

Callable

代理模式

Lambda

为什么用:

  1. 避免匿名内部类定义过多

  2. 可以让你的代码看起来很简洁

  3. 去掉了一堆没有意义的代码,只留下核心的逻辑

任何接口,如果只包含唯一一个抽象方法,那它就是一个函数式接口。

 public interface Runnable{
     public abstract void run();
 }//函数式接口(只有一个抽象方法)

对于函数式接口,我们可以通过lambda表达式来创建该接口对象

线程操作

停止线程:不推荐使用JDK提供的stop()、destroy()方法,推荐线程自己停下来,简易使用一个标志位进行终止变量当flag=false,则终止线程运行

线程休眠:每个线程都有一把锁,睡眠不会释放锁。

线程礼让:礼让线程,让当前正在执行的线程停止,但不阻塞。将线程从运行状态转为就绪状态,让CPU从新调度,礼让不一定成功,看CPU心情

线程强制执行:join合并线程,代线程执行完成后,再执行其他线程,其他线程阻塞。可以想象成插队。

线程优先级;现成的优先级用数字表示,范围从1~10,使用getPriority()、setPriority()改变或获取优先级。越高限制性的可能性就越大。但不一定就肯定先执行。

守护线程:线程分为用户线程和守护线程,虚拟机必须保证用户线程执行完毕,虚拟机不用等待守护线程执行完毕

队列同步:队列+锁

image-20220318174355955

方法里面需要修改的内容才需要锁,锁的太多,浪费资源。

死锁

image-20220318195941410

Lock锁

image-20220318200936664

lock与snychronized的对比

image-20220318201134107

生产者与消费者问题

线程池

 

标签:Runnable,优先级,thread,接口,Callable,线程,多线程
来源: https://www.cnblogs.com/doumingzhan/p/16117950.html