多线程的噩梦

线程,说说线程。

1个多月不头脑风暴,脑袋有点锈

线程,首先你在知道什么是进程,什么是线程!

进程很简单就是一个程序加载的时候会在你的任务管理器当中的进程中出现,

也就是说启动应用程序加载到内存,动态的为他分配一条或多条进程,本质上说

用户线程就是程序动态执行的过程。

每个进程都会有一个或多个进程。

线程:

程序动态执行的过程中一条或多条路径、任务

单核CPU:时间片的切换,感觉像是多个任务同时执行其实不是

多核CPU:真正意义上的多个任务的同时执行

二:线程的分类

用户线程  守护线程 了解一下

用户线程 

进城线程 死掉 用户线程 不会死掉 继续执行

守护线程

进程线程 死掉 ,守护线程也死掉了。

三、我们为什么要用多线程呢? 

为了解决cpu性能过剩,多线程应允而生

四、多线程的应用场景?

多线程任务同时处理,或者多任务协调处理。

一起干活,别待着。

其实很好玩的,怎么让线程顺序执行呢, t1 , t2 ,t3

用join让其他线程变为等待,知道调用了join方法的 t1执行完成后才能开始执行

t1.join 让其他线程变为等待,直到调用了join方法的t1执行完成后才能开始执行

面试题:

t1,t2,t3怎么顺序执行,在t2线程中调用t1.join,在t3线程中调用t2.join

其他

线程优先级(setPriority(1-10),设置的数字越大优先级越高)

在java中t1.setPriority(10)

注意:java中设置线程优先级,不代表每次都一定会被执行。只是CPU调度会优先分配。

线程安全问题:

1、有多个线程

2、有共享数据

3、对共享的数据进行修改,不修改不会产生线程安全

--------

如何解决多线程安全问题

加锁啊

lock 是一个接口,有三个实现类,使用的比较多的是ReentrantLock可重入锁

synchronized关键字

猜你喜欢

转载自blog.csdn.net/bambooda/article/details/84720066