
线程
文章平均质量分 51
已工作的小白
这个作者很懒,什么都没留下…
展开
-
第六课 死锁 Lock锁 生产者/消费者模式 线程池
死锁 多个线程各自占有一些共享资源﹐并且互相等待其他线程占有的资源才能运行﹐而导致两个或者多个线程都在等待对方释放资源﹐都停止执行的情形.某一个同步块同时拥有“两个以上对象的锁”时,就可能会发生“死锁”的问题. 产生死锁的四个必要条件: 1.互斥条件:一个资源每次只能被一个进程使用。 2.请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。 3.不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。 4.循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。 上面列出了死锁的.原创 2022-04-05 19:59:19 · 471 阅读 · 0 评论 -
第五课 线程同步
线程同步 处理多线程问题时,多个线程访问同一个对象﹐并且某些线程还想修改这个对象.这时候我们就需要线程同步﹒线程同步其实就是一种等待机制,多个需要同时访问此对象的线程进入这个对象的等待池形成队列,等待前面线程使用完毕,下一个线程再使用由于同一进程的多个线程共享同一块存储空间,在带来方便的同时,也带来了访问冲突问题,为了保证数据在方法中被访问时的正确性,在访问时加入锁机synchronized,当一个线程获得对象的排它锁,独占资源﹐其他线程必须等待,使用后释放锁即可.存在以下问题: 一个线程持有锁会导致其他.原创 2022-04-04 19:46:53 · 397 阅读 · 0 评论 -
第四课 线程休眠 线程礼让 Join 线程状态 线程优先级 守护(daemon)线程
线程休眠 sleep(时间)指定当前线程阻塞的毫秒数; sleep存在异常InterruptedException; sleep时间达到后线程进入就绪状态; sleep可以模拟网络延时,倒计时等。 每一个对象都有一个锁,sleep不会释放锁; 代码不展示了 线程礼让 礼让线程,让当前正在执行的线程暂停,但不阻塞 将线程从运行状态转为就绪状态 让cpu重新调度,礼让不一定成功!看CPU心情 package java1; public class TestYeild implements Runn.原创 2022-04-04 16:33:33 · 152 阅读 · 0 评论 -
第三课 线程的五大状态和线程停止
停止线程 不推荐使用JDK提供的stop().destroy()方法。【已废弃】 推荐线程自己停止下来 建议线程正常停止--->利用次数,不建议死循环. 建议使用一个标志位进行终止变量当flag=false,则终止线程运行。 package java1; public class TestStop implements Runnable{ private boolean stop=true; @Override public void run() { ...原创 2022-04-03 21:46:58 · 86 阅读 · 0 评论 -
第二课 Lambda表达式和Callable接口
为什么要使用lambda表达式 避免匿名内部类定义过多 可以让你的代码看起来很简洁 去掉了一堆没有意义的代码,只留下核心的逻辑。 也许你会说,我看了Lambda表达式,不但不觉得简洁,反而觉得更乱,看不懂了。那是因为我们还没有习惯,用的多了,看习惯了,就好了。 理解Functional Interface(函数式接口)是学习Java8 lambda表达式的关键所在。 函数式接口的定义: 任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口。 对于函数式接口,我们可以通过lambda表达式来创建该.原创 2022-04-03 20:57:08 · 613 阅读 · 0 评论 -
第一课 线程知识点
process 说起进程,就不得不说下程序。程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念。 而进程则是执行程序的一次执行过程,它是一个动态的概念。是系统资源分配的单位 通常在一个进程中可以包含若干个线程,当然一个进程中至少有一个线程,不然没有存在的意义。线程是CPU调度和执行的的单位。 注意:很多多线程是模拟出来的,真正的多线程是指有多个cpu,即多核, 如服务器。如果是模拟出来的多线程,即在一个cpu的情况下,在同一个时间点, cpu只能执行一个代码,因为切换的很快,所以就有同.原创 2022-04-03 20:25:12 · 249 阅读 · 0 评论