原标题:Java线程与CPU线程的区别都有哪些?
前言
在Java开发中线程开发是经常会用到的,但是很多的小伙伴们对于线程的掌握并不是很熟练,下面由小编带领小伙伴们再重新学习一下!
CPU线程
CPU:4核-----------------------:
程序:静态的状态,是一些指令的集合。
程序跑起来:
进程:分配CPU,内存等等系统资源。
线程:进程中可以分为好多个同步的操作,每一个操作就可以被称为一个线程
程序----》执行起来就是一个进程,有自己的资源(内存、CPU)------》一个进程可以划分为多个线程。每一个线程是互不影响,单独执行。
CPU:一个工厂的电力系统。
进程:一个车间。
很多个不同的工人,每一个工人都是一个线程。
真正在使用系统资源的是线程。
Java线程
一个java程序最少就有两个线程在同时执行:main和GC
线程创建的两种方式:
1、继承Thread类。----这个继承类的具体实例就是一个线程实例。
2、实现Runnable接口----这个实现类只是一个runnable的实例,需要用它创建一个线程实例,然后在启动线程
区别:Thread implements Runnable
Runnable是比Thread更灵活。因为继承是单继承,而实现接口可以多实现。
设置优先级的方法:
线程优先级范围:1-10,默认是5。
设置优先级:优先级越高,并不代表一定会先被执行,只是说明你先被执行的概率高一点而已。
sleep:让当前执行的线程进入休眠状态,到时间了自己就醒了,进入重新执行。不需要别人唤醒。
守护线程:精灵线程----守护要被守护的对象。设置守护线程一定是在线程被启动之前。
守护线程随着被守护的线程的死亡而死亡。但不是立刻死亡,而是还喘了一口气。
join
等待死亡(在哪儿被调用,谁等待)
yield
礼让线程,让出资源,让别的线程去抢占,但是结果是不确定的。只是告诉别的线程你可以抢系统资源了。
线程的声明周期:
1、新建:new出来一个线程对象的时候。
2、就绪:当调用start方法的时候,启动了线程,线程可以去抢占资源了。
3、运行:线程已经获取到CPU的资源,Run方法正在被执行。
4、阻塞:run方法没有执行完 ,而丧失了CPU的使用权,就会进入阻塞状态。----->CPU空出来之后,并且唤醒了之后,重新进入就绪状态去抢占CPU资源。
5、死亡:run方法执行完毕。或者出现一些不可控的外部因素致使程序崩溃等,线程也会死亡 。返回搜狐,查看更多
责任编辑: