欢迎来到Java学习路线专栏~深入了解电脑硬件以及多线程编程
- ☆* o(≧▽≦)o *☆嗨~我是IT·陈寒
- ✨博客主页:IT·陈寒的博客
- 该系列文章专栏:Java学习路线
- 文章作者技术和水平有限,如果文中出现错误,希望大家能指正
- 欢迎大家关注! ❤️
计算机硬件,如内存、硬盘、CPU、显卡、声卡、网卡等,构成了现代计算机的基础。CPU被称为计算机的大脑,负责各种计算任务和控制操作。我们可以将多核CPU比作家庭的多位家庭成员,分工协作,提高效率:
单核CPU就像一个人,他需要做饭、洗碗、摘菜、拖地、洗衣服等所有家务活。这样的工作方式让人感到累并且效率低下。即使有些任务可以同时进行,但总体上仍然是按顺序一个一个来,导致工作效率低下。
多核CPU就像家庭中的多位成员,可以分工协作。一位成员负责做饭,另一位负责洗碗,另外两位可以同时摘菜和拖地。这样可以有效提高效率,让每个核心专注于不同的任务,共同完成工作。
在多线程编程中,我们经常遇到并发与并行的概念。并发是指多个任务交替执行,微观上是顺序执行,宏观上是看起来同时执行;而并行是指多个任务同时执行,微观上是高频切换,宏观上是真正的同时进行。例如,在代码中同时进行画图和播放音乐就是并行执行。
进程是正在运行的程序,每个进程都有自己的内存空间和系统资源。线程是进程中的单个顺序控制流,是一条执行的路径。一个应用程序至少有一个线程。
在Java中,创建线程有以下步骤:
线程的名字可以通过setName(String name)方法设置,也可以通过构造方法进行设置,通过getName()方法获取。
线程的优先级可以通过setPriority(int newPriority)方法进行调整,默认优先级为5。优先级较高的线程在抢占式调度中更有可能获取资源。
线程可以通过sleep(long millis)方法进行休眠,使线程暂停执行一段时间。而join()方法可以使一个线程等待另一个线程执行完毕。
在多线程编程中,同步是按顺序一个一个来,而异步是无序的,可以同时有多个任务进行。这就好比公交车,同步是乘客一个一个上车,异步是挤上车的情况。
线程安全问题在多线程共享资源时会出现,比如多个窗口同时卖票。为了解决这个问题,我们可以使用锁机制。锁分为同步代码块和同步方法两种方式,可以避免多线程对共享资源的争夺。
通过可重入锁(ReentrantLock)可以更灵活地控制线程的锁定和解锁。使用Lock对象的lock()方法上锁,unlock()方法解锁。
在多线程编程中,线程通信是一个重要的问题,特别是在处理同一资源时。生产者消费者模型是一个典型的案例,其中生产者负责生产资源,消费者负责消费资源,需要通过等待(wait)、唤醒(notify)和唤醒所有(notifyAll)等方法来实现线程间的协调。
线程池可以降低资源消耗、提升响应速度和增加线程的可管理性。通过Executors工具类可以方便地创建线程池,使用submit方法来执行线程任务。线程池的工作原理是通过任务队列对线程进行管理,合理利用线程资源。
结尾
❤️ 感谢您的支持和鼓励!
您可能感兴趣的内容:
- 【Java面试技巧】Java面试八股文 - 掌握面试必备知识(目录篇)
- 【Java学习路线】2023年完整版Java学习路线图
- 【AIGC人工智能】Chat GPT是什么,初学者怎么使用Chat GPT,需要注意些什么
- 【Java实战项目】SpringBoot+SSM实战<一>:打造高效便捷的企业级Java外卖订购系统