多线程理解

  1. 程序:包含指令和数据的文件

  2. 进程:一个程序执行的完整过程,是操作系统分配资源的最小单位

  3. 线程:最小执行单位

  4. 并发:多个线程在同一个CPU上执行

  5. 并行:多个线程在不同CPU上执行

6.进程和线程区别?

  • 根本区别:进程是操作系统分配资源的最小单位;线程是最小执行单位
  • 资源开销:每个进程都有自己独立代码副本和数据空间,进程之间的切换,资源开销较大;线程可以看做轻量级的进程,每个线程都有自己独立的运行栈和程序计数器,线程之间切换,资源开销小
  • 包含关系:一个进程包含有多个线程,在执行过程中,线程的执行不是线性串行的,而是多条线程并行共同完成;
  • 内存分配:同一进程内的所有线程共享本进程的内存空间和资源;进程之间的内存空间和资源相互独立
  • 影响关系:一个进程崩溃后,在保护模式下不会对其他进程产生影响;一个线程崩溃,会导致整个进程退出。所以多进程要比多线程健壮
  • 执行过程:每个独立的进程有程序运行的入口和程序出口。但是线程不能独立执行,必须依存在应用程序(进程)中,由应用程序提供多个线程执行控制。

7.JVM由那些线程组成?

  1. 主线程  main
  2. 清除reference线程    Reference Handler
  3. 调用对象finalize方法的线程   Finalizer
  4. 分发处理给JVM信号的线程    Signal Dispatcher
  5. 添加事件监听器   Attach Listener
  6. idea工具独有线程(run模式)

线程基本概念

  • 单线程:单线程就是进程中只有一个线程。单线程在执行顺序时,所走的程序路径按照连续顺序排下来,前面的必须处理好,后面的才会执行。
  • 多线程:由一个以上的线程组成的程序称为多线程。Java中,一定是从主线程开始执行,然后在主线程的某个位置创建并启动新的线程。

 线程的创建与启动

  • 创建线程:创建Thread对象
  • 线程的实现方式:
    1. 继承Thread类
    2. 实现Runnable接口  没返回值   run方法
    3. 实现Callable接口   返回值是泛型   通过FutureTask转换(Runnable)  call方法
    4. 线程池
  • 线程启动:   通过调用Thread对象的start()方法

线程命名 

  • 调用父类的setName()方法或在构造方法中给线程名字赋值;
  • 如果没有为线程命名,系统默认指定线程名,命名规则是Thread-N的形式。

线程的休眠(暂停) 

在线程中,可以通过调用Thread.sleep(毫秒),强迫当前线程按照指定毫秒值休眠。

线程优先级

  • setPriority(int n)设置线程优先级,范围是1-10,默认为5.
  • 操作系统对高优先级线程,调度更频繁
  • 并不代表,通过设置优先级来确保高优先级的线程一定会先执行

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值