多线程
Heagge
这个作者很懒,什么都没留下…
展开
-
生产者消费者模式
管程法package thread;//测试:生产者消费者模型-->利用缓冲区解决:管程法//生产者,消费者,产品,缓冲区public class TestPC { public static void main(String[] args) { Container container = new Container(); new Productor(container).start(); new Consumer(container原创 2021-02-05 11:48:21 · 136 阅读 · 0 评论 -
线程同步
线程同步由于同一进程的多个线程共享同一块存储空间,在带来方便的同时,也带来了访问冲突问题,为了保证数据在方法中被访问时的正确性,在访问时加入锁机制synchronized,当一个线程获得对象的排它锁,独占资源,其他线程必须等待,使用后释放锁即可,存在以下问题一个线程持有锁会导致其他所有需要此锁的线程挂起在多线程竞争下,加锁,释放锁会导致比较多的上下文切换和调度延时,引起性能问题如果一个优先级高的线程等待一个优先级低的线程释放锁会导致优先级倒置,引起性能问题线程同步的形成条件队列+锁(解决原创 2021-02-05 11:45:22 · 81 阅读 · 0 评论 -
死锁
死锁避免方法:产生死锁的四个必要条件:互斥条件:即某个资源在一段时间内只能由一个进程占有,不能同时被两个或两个以上的进程占有不可抢占条件:进程所获得的资源在未使用完毕之前,资源申请者不能强行地从资源占有者手中夺取资源,而只能由该资源的占有者进程自行释放占有且申请条件:进程至少已经占有一个资源,但又申请新的资源,由于该资源已被另外进程占有,此时进程阻塞,但是他在等待新资源之时,仍继续占用已占有的资源循环等待条件:存在一个进程等待序列{P1,P2…Pn},其中P1等待P2所占有的某一资源,P2等待P原创 2021-02-05 10:47:15 · 108 阅读 · 0 评论 -
线程同步:三大不安全案例
不安全的取钱package syn;//不安全的取钱//两个人去银行取钱,账户public class UnsafeBank { public static void main(String[] args) { //账户 Account account = new Account(100,"结婚基金"); Drawing you = new Drawing(account,50,"你"); Drawing girlFriend原创 2021-02-05 10:38:03 · 279 阅读 · 0 评论 -
线程的方法(狂神学习笔记)
线程的五大状态创建状态阻塞状态死亡状态就绪状态运行状态一.停止线程不推荐使用JDK提供的stop(),destroy()方法推荐线程自己停止下来建议使用一个标志位进行终止变量当flag=false,则终止线程运行示例package state;//测试停止线程//1.建议线程正常停止--->利用次数,不建议死循环//2.建议使用标识位--->设置一个标识位//3.不要使用stop或者destroy等过时或者JDK不建议使用的方法public class Tes原创 2021-01-28 11:05:01 · 93 阅读 · 0 评论 -
创建线程三种方式
创建线程三种方式线程:线程是程序中执行的线程。java虚拟机允许应用程序同时执行多个执行线程方法一:继承Thread类(重点)步骤:自定义线程类继承Thread类重写run()方法,编写线程执行体新建线程对象,调用start()方法启动线程示例:public class TestThread1 extends Thread{ @Override public void run() { //run方法线程题 for (int i = 0; i原创 2021-01-22 17:52:43 · 153 阅读 · 0 评论