线程/进程
进程
1.是资源分配的基本单元
2.拥有独立的内存空间和资源
3.开销较大
4.稳定性高,一个进程的崩溃不会影响其他的进程
线程
1.是cpu调度的基本单元
2.共享进程的资源
3.开销较小
4.稳定性不高,一个线程崩溃可能会导致其他线程的崩溃
当我们写完一个线程之后可以通过idea的安装位置中的有一个jconsole可以查看我们当前的线程,线程需要运行起来才能看的到

创建线程的方法
线程的入口是我们重写的run方法,重写run方法之后还要调用start方法,才会真正调用系统api,在系统中创建出线程,线程就会执行重写的run方法

1.继承Thread重写run方法

2.实现Runnable接口重写run方法
使用Runnable还是需要搭配thread这个类才能在系统中创建出线程

3.继承Thread,重写run方法,使用匿名内部类
这样的写法就不需要单独写一个类来继承Thread,直接在实例化它的时候后面跟上一个大括号,在大括号里面重写上run方法即可,这个大括号相当于thread的子类,只是这个子类没有名字

4.实现runnable,实现run,匿名内部类
thread的构造方法的参数填写了runnable的匿名内部类的实例

5.使用lambda表达式
这个写法相当于实现runnable重写run,用lambda代替了runnable的位置

线程重命名
在匿名内部类后面加上要修改的名字即可


isDaemon后台线程
我们自己创建的代码默认是前台线程,会自己阻止进程结束,只要前台线程没有执行完,进程就不会结束,即使是main已经执行完毕了
在我们的工具jconsole里就可以看到已经没有main线程了,我们自己创建的线程还在继续执行

当我们在t.start前面添加setdaemon为true我们的线程就会变成后台线程就会直接让进程结束

isAlive
表示内核中的线程是否存在
当我们实例化对象之后,内核中的pcb还没有,此时isAlive就是false
使用t.start后,真正在内核中创建出这个pcb,此时isAlive就是true
当run执行完之后,内核中的线程结束,内核中的pcb释放,但是我们的t变量还是存在的,isAlive就变回false

                    
                
                
            
        
浙公网安备 33010602011771号