重学java 37.多线程基本了解

 尽管走自己的路,别被那些三言两语击倒                       

                                                —— 24.5.13

一、多线程_线程和进程

进程:在内存中执行的应用程序

线程:是进程中最小的执行单元
线程作用:负责当前进程中程序的运行,一个进程中至少有一个线程,一个进程还可以有多个线程,这样的应用程序就称之为多线程程序

简单理解:一个功能就需要一个线程去执行

多线程使用场景: 软件中的耗时操作 -——> 拷贝大文件,加载大量的资源
                   所有的聊天软件
                   所有的后台服务器
        一个线程干一件事,我们就可以同时做多件事了,提高了CPU的利用率

二、并发和并行

并行:在同一个时刻,有多个指令在多个CPU上同时执行(好比是多个人做不同的事儿)

        比如:多个厨师在炒多个菜

并发:在同一个时刻,有多个指令在单个CPU上(交替)执行

        比如:一个厨师在炒多个菜

细节:

        1.之前CPU是单核,但是在执行多个程序的时候好像是在同时执行,原因是CPU在多个线程之间做高速切换

        2.现在咱们的CPU都是多核多线程的了,比如2核4线程,那么CPU可以同时运行4个线程,此时不同切换,但是如果多了,CPU就要切换了,所以现在CPU在执行程序的时候并发和并行都存在

三、CPU调度

1.分时调度:指的是让所有的线程轮流获取CPU使用权,并且平均分配每个线程占用CPU的时间片

2.抢占式调度:多个线程轮流抢占CPU使用权,哪个线程先抢到了,哪个线程先执行,一般都是优先级高的先抢到CPU使用权的几率大,我们java程序就是抢占式调度

四、主线程介绍

主线程:CPU和内存之间开辟的专门为main方法服务的线程

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
学习Java多线程的路线可以按照以下步骤进行: 1. 理解并掌握基本概念:首先,你需要了解什么是线程、进程和并发编程。了解线程的生命周期、线程的状态转换以及线程的调度方式等基本概念。 2. 学习线程的创建和启动:学习如何创建和启动线程,可以使用Thread类或者实现Runnable接口来创建线程。了解如何通过start()方法启动线程,并了解线程的运行机制。 3. 线程同步与互斥:学习如何处理多个线程之间的共享资源访问问题,掌握使用synchronized关键字实现线程同步和互斥。了解锁的概念、锁的种类以及锁的使用方式。 4. 线程通信与协作:学习如何实现多个线程之间的通信和协作,掌握使用wait()、notify()和notifyAll()方法实现线程间的等待和唤醒操作。了解条件变量的概念和使用方式。 5. 线程池的使用:学习如何使用线程池来管理和调度线程,掌握ThreadPoolExecutor类的使用方法。了解线程池的原理、优势和适用场景。 6. 并发工具类的使用:学习Java提供的并发工具类,如CountDownLatch、CyclicBarrier、Semaphore等,掌握它们的使用方法和适用场景。 7. 并发编程的高级主题:学习一些高级的并发编程主题,如原子操作类、并发集合类、并发队列等。了解并发编程中的常见问题和解决方案。 8. 多线程调试与性能优化:学习如何调试多线程程序,掌握常见的多线程调试技巧。了解如何进行多线程程序的性能优化,提高程序的并发性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值