深入了解电脑硬件以及多线程编程


在这里插入图片描述

🎉欢迎来到Java学习路线专栏~深入了解电脑硬件以及多线程编程


  • ☆* o(≧▽≦)o *☆嗨~我是IT·陈寒🍹
  • ✨博客主页:IT·陈寒的博客
  • 🎈该系列文章专栏:Java学习路线
  • 文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏
  • 📜 欢迎大家关注! ❤️

在这里插入图片描述


认识计算机硬件与多核CPU的工作原理

计算机硬件,如内存、硬盘、CPU、显卡、声卡、网卡等,构成了现代计算机的基础。CPU被称为计算机的大脑,负责各种计算任务和控制操作。我们可以将多核CPU比作家庭的多位家庭成员,分工协作,提高效率:

单核CPU

单核CPU就像一个人,他需要做饭、洗碗、摘菜、拖地、洗衣服等所有家务活。这样的工作方式让人感到累并且效率低下。即使有些任务可以同时进行,但总体上仍然是按顺序一个一个来,导致工作效率低下。
在这里插入图片描述

多核CPU

多核CPU就像家庭中的多位成员,可以分工协作。一位成员负责做饭,另一位负责洗碗,另外两位可以同时摘菜和拖地。这样可以有效提高效率,让每个核心专注于不同的任务,共同完成工作。
在这里插入图片描述

并发与并行

在多线程编程中,我们经常遇到并发与并行的概念。并发是指多个任务交替执行,微观上是顺序执行,宏观上是看起来同时执行;而并行是指多个任务同时执行,微观上是高频切换,宏观上是真正的同时进行。例如,在代码中同时进行画图和播放音乐就是并行执行。
在这里插入图片描述

在这里插入图片描述


深入了解进程、线程及其优先级

进程与线程

进程是正在运行的程序,每个进程都有自己的内存空间和系统资源。线程是进程中的单个顺序控制流,是一条执行的路径。一个应用程序至少有一个线程。

线程的创建与命名

在Java中,创建线程有以下步骤:

  1. 定义一个类继承Thread,重写run()方法。
  2. 创建自定义类的对象。
  3. 启动线程,使用start()方法。

线程的名字可以通过setName(String name)方法设置,也可以通过构造方法进行设置,通过getName()方法获取。

线程的优先级与控制

线程的优先级可以通过setPriority(int newPriority)方法进行调整,默认优先级为5。优先级较高的线程在抢占式调度中更有可能获取资源。

线程的休眠与等待

线程可以通过sleep(long millis)方法进行休眠,使线程暂停执行一段时间。而join()方法可以使一个线程等待另一个线程执行完毕。
在这里插入图片描述


线程安全与锁机制

在这里插入图片描述

同步与异步

在多线程编程中,同步是按顺序一个一个来,而异步是无序的,可以同时有多个任务进行。这就好比公交车,同步是乘客一个一个上车,异步是挤上车的情况。

线程安全问题与锁

线程安全问题在多线程共享资源时会出现,比如多个窗口同时卖票。为了解决这个问题,我们可以使用锁机制。锁分为同步代码块和同步方法两种方式,可以避免多线程对共享资源的争夺。

可重入锁解决线程安全问题

通过可重入锁(ReentrantLock)可以更灵活地控制线程的锁定和解锁。使用Lock对象的lock()方法上锁,unlock()方法解锁。
在这里插入图片描述


多线程间的通信与线程池的使用

在这里插入图片描述

线程通信与生产者消费者模型

在多线程编程中,线程通信是一个重要的问题,特别是在处理同一资源时。生产者消费者模型是一个典型的案例,其中生产者负责生产资源,消费者负责消费资源,需要通过等待(wait)、唤醒(notify)和唤醒所有(notifyAll)等方法来实现线程间的协调。

线程池的优势与使用

线程池可以降低资源消耗、提升响应速度和增加线程的可管理性。通过Executors工具类可以方便地创建线程池,使用submit方法来执行线程任务。线程池的工作原理是通过任务队列对线程进行管理,合理利用线程资源。


🧸结尾


❤️ 感谢您的支持和鼓励! 😊🙏
📜您可能感兴趣的内容:

在这里插入图片描述

posted @ 2023-08-15 19:04  IT·陈寒  阅读(19)  评论(0编辑  收藏  举报  来源