网络建站工具,网站建设零金手指花总,青岛网页设计哪个公司好,傻瓜式建站软件下载内核
内核时操作系统的核心
操作系统有内核态和用户态#xff0c;像我们平时所用到的qq音乐#xff0c;微信等都属于用户态执行的程序。那么qq音乐播放音乐需要用到扬声器#xff0c;扬声器的操作就是在内核空间进行操作#xff0c;用户态不能对其进行操作。
操作系统 …内核
内核时操作系统的核心
操作系统有内核态和用户态像我们平时所用到的qq音乐微信等都属于用户态执行的程序。那么qq音乐播放音乐需要用到扬声器扬声器的操作就是在内核空间进行操作用户态不能对其进行操作。
操作系统 内核配套的应用程序 当我们运行代码的时候发现Thread和main同时打印这就是两个线程并发执行在上面的工具中我们也看到了mainThread-0这俩个线程其他一些线程都是自带的用来完成内存回收啊一些操作我们不用过多理解。
这里调度时随机的没有先后顺序这是由于我们时抢占式执行即开始执行时间和结束执行时间都随机。但一般在这个代码中main应该更快一步。因为当我们创建t线程的时侯主线程继续向下执行我们说这两个线程在一个进程中但是创建线程虽然不要开辟空间但是也不是完全没有消耗他要建立自己的pcd。所以第一次执行被main抢占先机。
当我们点开的时候会发现一个堆栈跟踪这就是代码执行到哪里这是对其的一个快照即这次点击和下次点击结果可能有所不同。
线程创建的几种方式
继承Thread 重写run方法 实现Runnable接口重写run方法
继承Thread重写run但使用匿名内部类 实现Runnable接口重写run方法使用匿名内部类
但是上面四种都不太常用一般使用lambda表达式
Thread其他方法
Thread()
Thread(Rannable b)
Thread(String name)
Thread(Rannable b String name)
这里的name就是线程名默认就是上面的Thread-0
Thread常见属性
getId()
身份标识
getName()
就是上面说的name
getState()
状态就绪/阻塞
getPriority()
优先级
getDaemon()
是否为后台线程这里默认为前台线程。这里的前台后台和手机app前后台不同前台线程会阻止进程结束后台线程不会阻止进程结束。也就是说只要前台线程全部执行完毕整个进程都会结束
默认是前台线程传入true为后台线程。
isAlive()
是否存活表示pcd是否存在。
这里对象实例的生命周期和内核pcd周期是不同的当Thread t new Thread();这时t就已经存在但是内核中pcd还没有存在t.start才真正创建了
第一个打印为false但t已经实例过了第二次为true因为线程没有结束第三次为false但t仍然没有被释放不过其线程已经结束。