长沙银狐做网站,营销型网站建设公司推荐,青岛制作网站的,长沙建站官网举个例子 滑稽老师吃100只鸡
如何加快滑稽老师吃鸡的效率#xff1f;#xff1f;
有一个方案#xff0c;搞两个房间#xff0c;两个滑稽老师 一个滑稽吃50只鸡#xff0c;速度一定会大幅度增加
多进程的方案 创建新的进程 就需要申请更多的资源#xff08;房间和…举个例子 滑稽老师吃100只鸡
如何加快滑稽老师吃鸡的效率
有一个方案搞两个房间两个滑稽老师 一个滑稽吃50只鸡速度一定会大幅度增加
多进程的方案 创建新的进程 就需要申请更多的资源房间和桌子
另一个方案使用多线程
房间和桌子还是那些但是吃鸡的主角多了一个这种方案资源开销更小
现在我们有两个滑稽能够提高效率如果引入更多的滑稽呢
现在引入更多的线程每个滑稽吃的鸡更小了速度更快了 与之对应的如果搞四套房间成本就更高了
此时这些滑稽老师共享的同一份资源
引入的滑稽是越多越好吗 当引入的线程达到一定数量之后在继续尝试引入新的线程好像就没有办法提升了
桌子坐不下了
当线程数量太多的时候线程之间就会相互竞争CPU的资源CPU核心数是有限的
非但不会提高效率反而还会增加调度 的开销
多线程问题还有一个重要的问题线程之间可能会打架
比如一号滑稽和2号滑稽看上了同一个鸡大腿同时伸手去拿谁能拿到存在诸多变数!!!!!!!线程之间起了冲突就可能会导致代码中出现一些逻辑上的错误线程安全问题
多线程这种方式不太好驾驭主要还是因为这个东西有一定的复杂
多线程还有一个问题共享资源也会有副作用
1号和2号抢鸡大腿的时候1号抢到了2号没抢到2号滑稽很生气
一个线程如果抛出异常并且没有处理好就可能会导致整个进程被终止
小结
1进程是包含线程的
2每个线程也是一个独立的执行流可以执行一些代码并且单独的参与到CPU的调度中。状态上下文优先级记账信息每个线程都有自己的一份
3.每个线程有自己的资源进程中的线程共用这一份资源内存空间和文件描述符表
进程是资源分配的基本单位线程是调度执行的基本单位
4.进程和进程之间不会相互影响如果同一个进程中的某个线程抛出异常是可能会影响到其他线程会把整个进程中的所有线程都异常终止
5线程也不是越多越好要能够合适。如果线程太多了调度开销可能非常明显。
6.同一个进程中的线程之间可能会相互干扰引起线程安全问题
Q如果面试官让你转前端转android转测试行不行
必须行 多线程编程
写代码的时候可以使用多进程进行并发编程也可以使用多线程进行并发编程
在Java中 不太推荐 很多和多进程编程相关的api在Java标准库中都没有提供
多线程在并发编程的时候效率更高频繁创建销毁的时候
尤其是对于Java进程是要启动Java虚拟机的
启动Java虚拟机这个事情的开销更大
搞多个Java进程就是多个Java虚拟机
系统提供了多线程编程的api ,java标准库把这些api封装了在代码中就可以使用了
java中提供的apiThread这样的类
Demo 实例
看一些第三方库文档 当开始上手就应该要找demo/tutor/example/get strat