【多线程】内涵

同花顺

有很多人对多线程很陌生,离它很遥远,没有使用过多线程。

但实际上处处都有多线程的痕迹。

举一个最基础的例子:

Java程序的进程里至少包含两个进程,主线程也就是main()方法线程,另一个是垃圾回收机制线程。

我们的java程序就不是单线程跑的。

多线程应用场景

1、短信验证码登录时,一般单独开一个线程去调用这个短信接口,主线程返回。

2、前端经常使用的ajax发送请求方法之所以是异步就是多线程。

3、图片上传业务。

4、文件服务中,对各节点上传文件进行分类,阶段很多,节点很多,速度非常慢,一两百个文件,就耗时700ms,经过使用多线程处理后,几十ms就解决了,效率提高了十倍,美滋滋,用户再也体会不到那种卡顿的感觉了。

5、tomcat以多线程的方式响应请求,上百个客户端访问tomcat,来一个请求,就用一个线程来接。

6、项目连接数据库时经常使用的druid连接池。

你不知道我的存在,但我一直都在。

多线程优势

为什么这么多地方都是用多线程?

四个轮子比1个轮子跑得快。

根本原因是,提高CPU的资源利用率。

多核CPU,跑单线程程序,使用一个CPU,其他CPU都在那闲着,刚吃不干,这不能忍。

直接开多个线程,让线程去争夺CPU的执行权。

线程的种类

君生我未生,君死我未死(用户线程)

不随主进程结束而结束,主线程走完了,用户线程不停继续走。

你go die,我不 go die。

我们一般自己创建的线程,比如线程池都是用户线程。

君生我也生,君死我也死(守护线程)

主线程比如main()结束,守护线程也会停止。

设置线程为守护线程,通过设置一个参数即可。

thread.setDaemon(true);

守护线程作用:

最典型的守护线程就是垃圾回收线程。

如果java进程中没有活着的线程了,垃圾回收机制也会自己死亡。

同生共死。 -_-||

线程停止

1、设置退出标志,使线程正常退出。

比如售票窗口是一直开着的,这个线程进入无限循环状态,

我们可以在外部使用主线程修改while()中的判断条件,让它为false,就会终止循环退出线程。

2、使用interrupt()方法中断线程,会抛出一个异常进行中断线程。

3、使用stop方法强行终止线程(不推荐,已废弃,不安全)。

线程优先级

一共1-10十个等级,默认是5,最高是10。

thread.setPriority(10);

优先级的应用场景:

如果八核CPU处理3个线程,无论优先级高低,每个线程都是单独一个CPU执行,也就是说你设置的优先级就是无效的。

如果开启10个线程,让四核CPU处理,这里线程优先级就会生效,竞争CPU资源。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值