多线程
Stanley_lin_
以学为乐
展开
-
多线程(十)守护线程和用户线程
线程分为用户线程和守护线程虚拟机必须确保用户线程执行完毕虚拟机不用等待守护执行完毕如,后台记录操作日志,监控内存,垃圾回收等也就是说,用户线程单独存在,不会因为其他线程而影响它的运行,但是守护线程依赖用户线程存在,只要用户线程全部执行完毕,守护线程也会退出,虚拟机不用等待守护线程执行完毕。/** * 测试守护线程 * @author LCW * @since 2020/11/10 16:14 **/public class TestDaemon { public stati.原创 2020-11-24 18:44:13 · 1316 阅读 · 0 评论 -
多线程(九)线程优先级
Java提供一个线程调度器来监控程序中启动机后进入就绪状态的所有线程,线程调度器按照优先级决定应该调度哪个线程来执行。线程的优先级用数字表示,范围是1~10Thread.MIN_PRIORITY=1;Thread.MAX_PRIORITY=10;Thread.NORM_PROORITY=5;使用以下方式改变或获取优先级getPriority(().setPriority(int xxx)优先级低只是意味着获得调度的概率低,并不是优先级低就不会被调用了,这都是都看Cpu的调度/.原创 2020-11-24 18:34:27 · 1366 阅读 · 0 评论 -
多线程(八)synchronized(线程同步)
多个线程操作同一个线程并发:同一个对象被多个线程同时操作线程同步:现实生活中,我们会遇到“同一个资源,多个人都想使用”的问题,比如,食堂排队打饭,每个人都想吃饭,最天然的解决班法就是排队,一个个来。处理多线程问题时, 多个线程访问同一个对象,并且某些线程还想修改这个对象,这时候我们就需要线程同步,线程同步其实就是一种等待机制,多个需要同时访问此对象的线程进入这个对象的等待池形成队列,等待前面线程使用完毕,下一个线程再使用由于同一进程的多个线程共享同一块存储空间,在带来方便的同时,也带来了访问冲突问原创 2020-11-24 18:25:58 · 1358 阅读 · 0 评论 -
多线程(七)yield(线程礼让)和join(线程强制执行)
线程礼让–yield礼让线程,让当前正在执行的线程暂停,但不堵塞将线程从运行状态转为就绪状态让CPU重新调度,礼让不一定成功!看CPU心情举例 - 堵塞是运动员摔倒了,需要恢复完再进行比赛 - 而就绪状态指的是运动员准备跑了 - 运行状态,运动员在奔跑中 - 线程执行了yield,就是让当前处于运行状态的线程暂停,但不阻塞,就是指让奔跑的运动员停下来,然后重新跑/** * 测试礼让线程 * 礼让不一定成功,看cpu心情 * * @author LCW * @since 2原创 2020-11-24 17:40:56 · 1019 阅读 · 0 评论 -
多线程(六)线程的五大生命周期,六个状态,七种基础状态
关于线程的六个状态可以看一下:Java线程的6个状态建议先看一下上面的文章,再看下面的文章。线程的五大生命周期NEW: 线程新建状态RUNNABLE: 就绪状态RUNNING: 运行状态BLOCKED: 堵塞状态TERMINTED: 终止状态看完Java线程的6个状态我们会发现五大状态比Thread.state多了一个RUNNING状态,但是少了TI原创 2020-11-19 20:26:09 · 3999 阅读 · 0 评论 -
多线程(五)wait()和sleep()的异同
1.来自不同的类wait() ==>Object类sleep() ==>Thread类2.关于锁的释放sleep()是使线程休眠,不释放锁;wait方法是在获取锁情况下进行等待的,等待时会释放锁;3.使用的范围sleep()可以在任何地方使用,wait ()只能在同步代码块(synchronized) 使用,否则会抛 IllegalMonitorStateException异常4.使进程进入的状态sleep()会使得线程进入TIME_WAITING状态,而wait()会使原创 2020-11-19 19:19:04 · 2125 阅读 · 0 评论 -
多线程(四)Java线程的6个状态(用代码测试在控制台打印状态)
Java线程有多少个状态?直接查看Thread.state类public enum State { NEW,// 尚未启动的线程处于此状态 RUNNABLE,// 在Java虚拟机中执行的线程处于此状态 BLOCKED,//被堵塞等待监视器锁定的线程处于此状态 WAITING,//等待,死死的等,等待另一个线程执行特定动作的线程处于此状态 TIMED_WAITING,//超时等待,等待另一个线程执行动作达到指定等待时间的线程处于此状态。 TERMINATE原创 2020-11-18 23:19:45 · 4212 阅读 · 0 评论 -
多线程(三)Java线程创建的三种方式
三种创建方式Thread class 继承Thread类重写runnable方法实现callable方法创建线程方式一:继承Thread类,重写run()方法,调用start开启线程/** *创建线程方式一:继承Thread类,重写run()方法,调用start开启线程 * 总结:注意,线程开启不一定立即执行,由cpu调度执行 * * @author LCW * @since 2020/11/9 8:57 **/public class TestThread1 exten原创 2020-11-18 21:18:38 · 3966 阅读 · 0 评论 -
多线程(二)并发和并行
并发(多线程同时操作同一个资源)单核CPU ,模拟出多条线程,快速交替并行(多个人一起行走,多个人处理多件事情)多核CPU,多个线程可以同时执行,同时干不同的事情简而言之,就是并发是多个线程交替执行,反正一个CPU就只能同时处理一个线程,而并行就是指多个CPU,它可以同时处理多件事情获取本机电脑CPU的核数public class Test { public static void main(String[] args) { //获取cpu的核数原创 2020-11-18 20:00:11 · 4082 阅读 · 0 评论 -
多线程(一)程序,进程,线程的区别与联系
程序、进程、线程的概念程序是指令的有序集合,被存储在磁盘或其他的数据存储设备中,是一个静态概念,其本身没有任何运行的含义。进程是指一个具有一定独立功能的程序关于某个数据集合的一次运行活动,是系统运行程序的基本单位,因此进程是动态的。线程与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。与进程不同的是同类的多个线程共享同一块内存空间和一组系统资源,所以系统在产生一个线程,或是在各个线程之间作切换工作时,负担要比进程小得多,也正因为如此,线程也被称为轻量级进程。程序原创 2020-11-18 17:34:18 · 5282 阅读 · 0 评论