线程/进程

进程

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

 

posted @ 2025-02-13 15:01  油头男孩  阅读(12)  评论(0)    收藏  举报