java并发编程
joker_187
让你难过的那些事,总有一天你会笑着说出来
展开
-
线程的基本操作(六)---yield
yield方法操作系统是为每个线程分配一个时间片来占用CPU执行的,正常情况下只有占用CPU的线程使用完时间片后,线程调度器才会进行下一轮线程调度。如果线程在没有使用完时间片的情况下调用了Thread的yield方法,这个线程就会处于就绪状态,让出CPU的执行权。线程调度器就会重新从就绪队列里取一个优先级最高的线程执行。也有可能会取到刚刚让出CPU的线程。代码理解public class Y...原创 2019-10-28 13:10:41 · 534 阅读 · 0 评论 -
线程的基本操作(五)---中断
为什么需要中断在线程执行过程中,有很多场景需要终止线程的运行。这时就需要一个方法来结束线程并返回结果。中断的方法Thread类中提供了3个有关中断的方法:interrupt():设置中断标志位为trueinterrupted();检测中断标志,如果有设置会清除标志位isInterrupted():检测中断标志位使用场景大家都用过迅雷下载电影,假如一个电影下载到一半,可能是网速太慢...原创 2019-10-27 15:14:44 · 146 阅读 · 0 评论 -
线程的基本操作(四)---sleep and join
join等待线程执行终止join方法是Thread方法直接提供的方法,返回值是void适用场景:需要线程有序地执行,而不是被动随机等待CPU分配时间片。如多个线程加载资源,需要等待资源全部资源加载完毕再汇总执行下个操作。sleep顾名思义sleep方法是让线程休眠的方法,当线程调用了sleep方法后,调用线程会暂时让出指定时间的执行权,不参与CPU调度,但是不会释放锁。等待时间到了,线...原创 2019-10-27 12:30:17 · 144 阅读 · 0 评论 -
锁的分类和使用(一)
锁的概述在java并发编程中,经常引入锁,来处理复杂的线程变化。今天就来理一理有哪些锁1.乐观锁和悲观锁乐观锁和悲观锁是在数据库中引入的名词。可以在高并发环境下保护数据的正确性。乐观锁认为数据在处理过程中一般不会产生冲突,所以只在sql提交的时候检测冲突。如果有冲突则返回失败,通知用户自行处理。悲观锁认为数据在处理的时候一定会有冲突,所以在处理数据之前就加上事务。防止其他线程操作数据,来...原创 2019-10-25 16:26:30 · 438 阅读 · 0 评论 -
线程的基本操作(三)--- wait()方法
看个小例子:package demo.thread.wait;/** * 共享对象(鱼篓) */public class Well { public int count; public int getCount() { return count; } public void setCount(int count) { ...原创 2019-10-20 17:08:02 · 703 阅读 · 0 评论 -
线程的基本操作(二)--- 操作线程方法
线程的生命周期新建状态(new)此时线程刚刚创建,还未启动就绪状态(runable)线程调用了start() ,等待获取CPU资源,由CPU决定何时分配时间片执行。运行状态(running)线程处于运行阶段。运行run(方法)在运行阶段可做的操作有1.wait():wait方法是作用在共享变量上的,不是作用在线程对象上。当一个线程调用一个共享变量的wait()方法时,调用该对...原创 2019-10-20 17:03:54 · 182 阅读 · 0 评论 -
线程的基本操作(一)---java线程的创建方式
1.什么是线程在谈线程之前要先了解下进程,线程不会脱离进程单独存在。进程是代码在数据集合上的一次运行活动,是系统进行资源分配的和调度的基本单位。线程是进程的一个执行路径,一个进程中最少有一个线程,进程中的多个线程可以共享进程的资源。1.1.线程的创建java中有3中线程的创建方式:继承Thread类并重写run方法实现Runnable接口的run方法使用FutureTask方式...原创 2019-10-17 12:32:16 · 101 阅读 · 0 评论