多线程
1.什么是线程?什么是进程?
进程是一个应用程序。
线程是进程中的执行单元或执行环境。
2.JAVA程序中如何存在?
回车后,先,启动JVM,JVM就是一个线程;后,启动主线程调用main方法;且,同时启动垃圾回收线程。
所以JAVA程序中至少有俩个线程并发。
一个是执行main方法的主线程,另一个是垃圾回收线程。
3.进程与线程的关系
进程a与进程b的内存独立不共享。
线程a与线程b的方法区内存和堆内存共享,但栈内存独立,一个线程一个栈。
每个栈之间互不影响,各执行各的,这便是多线程并发。
多线程提高效率。
举个例子就:
钱包是进程,
钱包里的钱,卡,钥匙等等就是线程。
4.什么是真正的多线程并发?
a线程执行a的
b线程执行b的
a不会影响b,b也不会影响a
5.对于单核CPU来说,是否真的可以做到真正的多线程并发?
对于多核CPU来说,是可以做到真正的多线程并发的。
4核CPU,表示同一个时间点上,可以有真正的4个线程并发执行。
单核CPU只有一个大脑,不能够做到真正的多线程并发。只是CPU的处理速度极快,多线程之间频繁切换进行。
给人的感觉就是多个事情同时在做,这和电影院的还用胶卷播放电影的原理一样。
6.如何启动线程?(run和start)
7.上面程序的特点?为什么?
有先有后,有多有少。
控制台只有一个;某个线程抢到执行权。
8.JAVA实现线程得俩种方式?
第一种:
第二种:
第二种方式实现接口比较常用,因为一个类实现了接口,还可以去继承其他类,更灵活。
(合并代码)
9.如何采用匿名内部部类创建线程对象?
接口不能new对象。
其实是 new [匿名] implements Runnable
10.关于线程生命周期?
新建状态
就绪状态
运行状态
阻塞状态
死亡状态
11.如何创建线程对象?如何设置线程的名字?如何获取线程的名字?