Java多线程
文章平均质量分 55
多线程相关知识
Ridersong
02
展开
-
Java里简单使用Lambda表达式
②:对于函数式接口,可以通过Iambda表达式来创建该接口的对象。函数式接口(Functional Interface):lambda使用的前提。①:任何接口只包含唯一一个抽象方法,那么它就是一个函数式接口。③:去掉一堆没有意义的代码,只留下核心逻辑代码。①:避免匿名内部类定义过多。②:可以让代码看起来更简洁。原创 2023-03-24 19:17:44 · 120 阅读 · 0 评论 -
Java多线程-同步基础
关键字synchronized:对于静态方法来说加上synchronized关键字,这个方法就是同步的 1:synchronized关键字不能被继承。定义:线程同步就是一种等待机制,多个需要同时访问此对象的线程(并发)进入这个对象的等待池形成队列,等待前面线程使用完毕,下一个再使用。2:请求与保持条件:一个进程因资源获取而堵塞时,对于已拥有的资源保持不放。弊端:方法里需要修改的内容才需要锁,锁的太多,浪费资源。1:互斥条件:一个资源只能一次性被一个进程使用。原创 2023-04-07 09:03:00 · 72 阅读 · 0 评论 -
Java多线程-基础概述及基本建立方法
Runnable接口:标识一个Java类是否可作为线程类,此接口只有一个抽象方法run()。所以一个线程类的唯一标识就是这个类是否实现了Runnable接口的run()方法。2:建立一个Thread对象,并将第一步实例化后的对象作为参数传入Thread类的构造方法,最后通过Thread类的start()方法建立。进程与进程之间不共享内存,而一个进程中的线程可以共享系统派给这个进程的内存空间。Callable接口是可以让线程返回值的,和线程池一起使用,常规创建线程的方法是实现Runnable接口。原创 2023-04-05 10:07:08 · 80 阅读 · 0 评论 -
Java多线程-线程状态及基本方法的使用
②:守护(后台)线程:虚拟机不用等待守护线程执行完毕。后台线程有一个非常明显的特征:如果所有前台线程都死亡,它就会自动死亡。join()方法:使异步执行的线程变成同步执行。使用join方法后,直到这个线程退出(执行完毕),程序才会往下执行,可以理解位插队,少用。TIEMD_WAITING:正在等待另一个线程执行动作到达指定等待时间的线程。WAITING:正在等待另一个线程执行特定动作的线程。RUNNABLE:在Java虚拟机中执行的线程。①:用户线程:虚拟机必须确保用户线程执行完毕。原创 2023-04-06 10:43:37 · 105 阅读 · 0 评论 -
线程同步-Synchronized和Lock
5:Synchronized是可重入锁,不可以中断,非公平锁;Lock是可重入锁,可以判断锁,非公平锁(可以自己设置为公平锁)。3:Synchronized会自动释放锁,Lock需要手动开启和释放锁,如果没有释放就会死锁。4:获得Synchronized锁的线程如果阻塞,其他线程便会一直等待;2:Synchronized无法判断获取锁的状态,Lock可以判断是否获取到了锁。1:Synchronized是内置的Java关键字,Lock是一个Java接口。公平锁:先来先使用原则。非公平锁:没有排队。原创 2023-04-21 09:35:34 · 73 阅读 · 0 评论 -
多线程经典问题:消费者与生产者问题Java代码(线程通信)
1:假设仓库里只能存一件产品,生产者(Producer)将产品生产出来放入仓库,消费者(Consumer)将产品从仓库取出消费。2:管程法里生产者和消费者可以一次性生产或者消费多个产品;2:如果仓库里没有产品,生产者将产品放入仓库;如果有,停止生产并等待,直到仓库中的产品被消费者拿完为止。3:如果仓库里有产品,消费者可以取走消费;3:消费者需要去缓冲区(同步互斥)拿数据,生产需要向缓冲区放入数据,不能同时放入和拿取。1:管程法利用容器实现,信号灯法利用标志位实现。2:消费者负责处理数据(V)原创 2023-04-08 14:18:37 · 189 阅读 · 0 评论