美文网首页
线程基础知识

线程基础知识

作者: Timeschang_e07c | 来源:发表于2020-09-04 18:25 被阅读0次

TODO CPU核心数和线程数的关系 ====================================

TODO 以前

六个核心数  以前 1:1  一个核心 就是一个线程

单核 一个核心 一个线程

TODO 现在

现在 超线程技术---> (1:2)  六个核心数 = 12个线程

四核 六核 ...

TODO 安卓处理器

ARM32,ARM64,x86,x64

TODO CPU时间片轮转机制 ====================================  随机切换机制

进程:操作系统所管理的最少单元

线程:CPU调度的最少单元

操作系统调度执行.....CPU...单核...线程一 执行 【线程(可执行)】

CPU时间片轮转机制 采用了,一种算法,这种算法就叫做 RR调度

TODO 什么是进程和线程 ====================================

todo 进程和线程的基础

进程 > 线程

一个进程至少一个线程 或 多个线程

如果一个进程,还有一个线程没有杀掉 还存活,那么进程还存活 (线程依附进程)

进程A { 线程一, 线程二,线程三 .... }

进程B { 线程一}

进程C {}  挂了

TODO 并行和并发

====================================

并行:四个跑到

并发:10秒钟,我服务器的吞吐量

    十秒钟,多少车流量,多少车跑过去

TODO 高并发编程的意义,好处

6核12线程 ---> 平衡使用我们的线程 (好处)

高并发编程:(不要CPU过累)

6核12线程

    A进程里面(new Thread() 1000次  每一次 开辟栈空间 至少有1MB, result: 1G多的内存)

TODO ====================================

Java默认就是多线程的

TODO 启动方式 ====================================

3种方式

第三种方式 return V

TODO 停止线程

和谐 让 run函数执行完毕,是不是就结束

TODO 【面试题】 就是 run 和start的区别 ?

答:run是函数调用 和线程没有任何关系, .start会走底层 会走系统层 最终调度到 run函数,这才是线程。

TODO 【面试题】 如何控制线程的执行顺序 ?

答:join来控制 让t2获取执行权力,能够做到顺序执行

TODO 【面试题】 多线程中的并行和并发是什么?

答:四个车道,四辆车并行的走,就是并行,  四个车道中,五秒钟多少的车流量,多少的吞吐量一样

TODO 【面试题】在Java中能不能指定CPU去执行某个线程?

答:不能,Java是做不到的,唯一能够去干预的就是C语言调用内核的API去指定才行,这个你回答的话,面试官会觉得你研究点东西

TODO【面试题】在项目开发过程中,你会考虑Java线程优先级吗?

答:不会考虑优先级,为什么呢? 因为线程的优先级很依赖与系统的平台,所以这个优先级无法对号入座,无法做到你想象中的优先级,属于不稳定,有风险

    因为某些开源框架,也不可能依靠线程优先级来,设置自己想要的优先级顺序,这个是不可靠的

    例如:Java线程优先级又十级,而此时操作系统优先级只有2~3级,那么就对应不上

TODO 【面试题】sleep和wait又什么区别?

答:sleep是休眠,等休眠时间一过,才有执行权的资格,注意:只是又有资格了,并不代表马上就会被执行,什么时候又执行起来,取决于操作系统调度

  wait是等待,需要人家来唤醒,唤醒后,才有执行权的资格,注意:只是又有资格了,并不代表马上就会被执行,什么时候又执行起来,取决于操作系统调度

  含义的不同:sleep无条件可以休眠, wait是某些原因与条件需要等待一下(资源不满足)

TODO 【面试题】 在Java中能不能强制中断线程的执行?

答:虽然提供了 stop 等函数,但是此函数不推荐使用,为什么因为这种暴力的方式,很危险,例如:下载图片5kb,只下载了4kb 等

  我们可以使用interrupt来处理线程的停止,但是注意interrupt只是协作式的方式,并不能绝对保证中断,并不是抢占式的

TODO 【面试题】 如何让出当前线程的执行权?

答:yield方法,只在JDK某些实现才能看到,是让出执行权

TODO 【面试题】sleep,wait,到底那个函数才会 清除中断标记?

答:sleep在抛出异常的时候,捕获异常之前,就已经清除

相关文章

  • 线程基础知识

    线程学习 线程的基础知识 线程是什么? 线程和进程的关系 线程的6个状态 线程优先级 主线程、多线程、后台线程的概...

  • 百度iOS面试总结

    原文链接 一面 1、iOS基础知识 2、Python基础知识,大概是多线程,线程安全,集合类,JVM,类相关知识等...

  • 百度iOS面试总结

    一面 1、iOS基础知识 2、Python基础知识,大概是多线程,线程安全,集合类,JVM,类相关知识等。 3、i...

  • 多线程快速入门(第一天)

    线程基础知识 join()方法作用join作用是让其他线程变为等待, t1.join();// 让其他线程...

  • day3 线程

    线程基础知识 线程状态 线程可以有如下6中状态 New(新创建) Runable(可运行) Blocked(被阻塞...

  • Java多线程高级特性(JDK8)

    [TOC] 一、Java多线程 1.Java多线程基础知识 Java 给多线程编程提供了内置的支持。一条线程指的是...

  • iOS多线程-GCD的常见用法

    复习下线程的基础知识, 这里主要是参考文顶顶多线程篇复习写的。 1、线程间通信示例 从子线程回到主线程 2、延时执...

  • APUE读书笔记-12线程控制(1)

    1、简介 前面我们讲述了和线程以及线程同步相关的基础知识,本章我们将学习对线程的具体控制。我们会看到一些线程和线程...

  • 并发基础知识补全和CAS基本原理

    并发基础知识补全 Callable、Future和FutureTask 在前文(线程基础、线程之间的共享与协作)中...

  • iOS多线程学习笔记

    多线程的基本知识 先补一发基础知识 什么是线程 线程,有时被称为轻量级进程(Lightweight Process...

网友评论

      本文标题:线程基础知识

      本文链接:https://www.haomeiwen.com/subject/kzhtektx.html