多线程】多线程如何理解核心线程这个概念?是否有核心线程?

2021-04-12 16:04发布

7条回答
aijingda
2楼 · 2021-04-13 09:58

没有所谓的核心线程,线程只有单线程和多线程之分~

首先,关于计算机系统的很多概念,都有“逻辑层” 和 “物理层”的区分,这个是前提。

然后再看,“核心”这个概念是“物理层”的概念,指的就是 CPU硬件的物理核心数量。

而“线程” 这个概念,是“逻辑层”的概念,而且这个“逻辑层”的概念,还要区分是 “CPU逻辑层” 还是 “操作系统OS逻辑层”。

三岁奶猫
3楼 · 2021-04-13 13:43

核心也就是所谓的核心数量,指的是CPU几核的,例如双核、四核、八核等,我们可以比喻为人的胳膊,双核就是两条胳膊,四核就是四条胳膊,胳膊越多我们同时进行的任务越多。单核单线程我们可以理解为一条胳膊长一只手,例如双核配双线程或者双核四线程、四核八线程的处理器,由于技术越来越厉害,造出了一条胳膊长两只手的情况,这样干活的效率也就大大的提升了。

小小邓
4楼 · 2021-04-14 17:02

可以这么想象一下:单核单线程就是一个人办事,双核双线程就是两个人办事,四核四线程就是四个人办事,而双核四线程指的是这里只有两个人,但是通过某些方法,他们能做到四个人的工作量。多线程技术在CPU中的表现就是虚拟核心,比如双核四线程cpu,他只有两个核心,但是在程序中,它将被认定为四个核心。一般情况下性能上:X核X线程

任@先生
5楼 · 2021-04-18 13:50

核心也就是所谓的核心数量,指的是CPU几核的,例如双核、四核、八核等,我们可以比喻为人的胳膊,双核就是两条胳膊,四核就是四条胳膊,胳膊越多我们同时进行的任务越多。单核单线程我们可以理解为一条胳膊长一只手,例如双核配双线程或者双核四线程、四核八线程的处理器,由于技术越来越厉害,造出了一条胳膊长两只手的情况,这样干活的效率也就大大的提升了。

722
6楼 · 2021-04-19 10:06

没有所谓的核心线程,线程只有单线程和多线程之分~

首先,关于计算机系统的很多概念,都有“逻辑层” 和 “物理层”的区分,这个是前提。

然后再看,“核心”这个概念是“物理层”的概念,指的就是 CPU硬件的物理核心数量。

而“线程” 这个概念,是“逻辑层”的概念,而且这个“逻辑层”的概念,还要区分是 “CPU逻辑层” 还是 “操作系统OS逻辑层”。


寂静的枫林
7楼 · 2021-08-16 15:23

线程就是一个进程的许多子任务。就比如你打开浏览器之后可能即浏览网页又在下载东西,你虽然你好像是同时做了两件事情,但其实是\cpu不停的在两个任务之间切换,只是切换的速度很快,感觉上是同时运行的,另外,线程是异步滴。

核心线程一般指双核心四线程。 指处理器中有两个核心, 但是利用了超线程技术,一个核心就有2个线程,所以两个核心就有4个线程。一般来说,两个核心就只有2线程。

相关问题推荐

  • 回答 2

    groupNum = / List listThreads = ArrayList()(i = i 

  • 回答 4

    多线程(multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。具有这种能力的系统包括对称多处理机、多核心处理器以及芯片级多处理或同时多线程...

  • 回答 18

    这是一个非常刁钻和狡猾的问题。请记住:线程类的构造方法、静态块是被 new这个线程类所在的线程所调用的,而 run 方法里面的代码才是被线程自身所调用 的。如果说上面的说法让你感到困惑,那么我举个例子,假设 Thread2 中 new 了 Thread1,main ...

  • 回答 26

    多线程类似于同时执行多个不同程序,多线程运行有如下优点:使用线程可以把占据长时间的程序中的任务放到后台去处理。用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度程序的运行速度可能加快在...

  • 回答 7

    同步块是更好的选择,因为它不会锁住整个对象(当然你也可以让它锁住整个对象)。同步方法会锁住整个对象,哪怕这个类中有多个不相关联的同步块,这通常会导致他们停止执行并需要等待获得这个对象上的锁。...

  • 回答 5

    单例模式是为确保一个类只有一个实例,并为整个系统提供一个全局访问点的一种模式方法。单例模式的特点:(1)、在任何情况下,单例类永远只有一个实例存在。(2)、单例需要有能力为整个系统提供这一唯一实例。...

  • 回答 5
    已采纳

    很多人都知道死锁是怎么一回事儿:线程A和线程B相互等待对方持有的锁导致程序无限死循环下去。当然也仅限于此了,问一下怎么写一个死锁的程序就不知道了,这种情况说白了就是不懂什么是死锁,懂一个理论就完事儿了,实践中碰到死锁的问题基本上是看不出来的。...

  • 回答 3

    这是一个比较偏实践的问题,这种问题我觉得挺有意义的。可以这么做:(1)获取项目的pid,jps或者ps -ef | grep java,这个前面有讲过(2)top -H -p pid,顺序不能改变这样就可以打印出当前的项目,每条线程占用CPU时间的百分比。注意这里打出的是LWP,也就...

  • 回答 4

    通过继承 Thread 类来创建线程的一般步骤如下:1. 定义一个 Thread 类的子类,重写 run() 方法,将相关逻辑实现,run() 方法就是线程要执行的业务逻辑方法;2. 创建自定义的线程子类对象;3. 调用子类实例的 start() 方法来启动线程。通过实现 Runnable 接口创...

  • 回答 4

    新建状态(New):当线程对象对创建后,即进入了新建状态,如:Thread t = new MyThread();就绪状态(Runnable):当调用线程对象的start()方法(t.start();),线程即进入就绪状态。处于就绪状态的线程,只是说明此线程已经做好了准备,随时等待CPU调度执行,并不...

  • 回答 4

    新建:就是刚使用new方法,new出来的线程;就绪:就是调用的线程的start()方法后,这时候线程处于等待CPU分配资源阶段,谁先抢的CPU资源,谁开始执行;运行:当就绪的线程被调度并获得CPU资源时,便进入运行状态,run方法定义了线程的操作和功能;阻塞:在运行状...

  • 回答 6

    通过在线程之间共享对象就可以了,然后通过wait/notify/notifyAll、await/signal/signalAll进行唤起和等待,比方说阻塞队列BlockingQueue就是为线程之间共享数据而设计的

  • 回答 11

    这个问题有值得一提的地方,就是线程安全也是有几个级别的:(1)不可变像String、Integer、Long这些,都是final类型的类,任何一个线程都改变不了它们的值,要改变除非新创建一个,因此这些不可变对象不需要任何同步手段就可以直接在多线程环境下使用(2)绝...

  • 回答 4

    两个看上去有点像的类,都在java.util.concurrent下,都可以用来表示代码运行到某个点上,二者的区别在于:(1)CyclicBarrier的某个线程运行到某个点上之后,该线程即停止运行,直到所有的线程都到达了这个点,所有线程才重新运行;CountDownLatch则不是,某...

  • 回答 5

    (1)通过平衡生产者的生产能力和消费者的消费能力来提升整个系统的运行效率,这是生产者消费者模型最重要的作用(2)解耦,这是生产者消费者模型附带的作用,解耦意味着生产者和消费者之间的联系少,联系越少越可以独自发展而不需要收到相互的制约...

没有解决我的问题,去提问