JAVA学习第11天

16 篇文章 0 订阅
11 篇文章 0 订阅

    多线程

  • 常见概念:
            1. 进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1--n个线程。
            2. 线程:同一线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小。
            3. 线程和进程一样分为五个阶段:创建(刚new出来的线程)、就绪(线程一切都准备就绪,调用start方法)、运行(cpu执行线程,按顺序执行)、阻塞(线程在运行过程中遇到的不正常现象;例:死循环,流通道阻塞,阻塞状态线程会让出CPU,阻塞原因被解除后,重新进入就绪状态)、终止(死亡,线程正常运行结束时,一经终止不可复活,只能重新new)。
            4. 多线程是指操作系统能同时运行多个任务(程序),按顺序执行。
            5. 多线程是指在同一个程序中有多个顺序流在执行。
            6. 这个程序(一个进程)运行时产生了不止一个线程
            7. 并行与并发
              1. 并行:多个CPU实例或者多台机器同时执行一段处理逻辑,是真正的同时。
              2. 并发:通过CPU调度算法,让用户看上去同时执行,实际上从CPU操作层面不是真正的同时。并发往往在场景中有共用的资源,那么针对这个共用的资源往往会产生瓶颈,我们会用TPS和QPS来反应这个系统的处理能力。
              3. 阻塞情况分三种:
                1. 等待阻塞:运行的线程执行wait()方法,jvm会把该线程放入等待池中
                2. 同步阻塞:运行的线程在获取对象时的同步锁,若该同步锁被别的线程所占用,则JVM会把该线程放入到锁池中
                3. 其他阻塞:运行的线程sleep()或者join()方法。或者发出I/O请求时,JVM会把该线程置为阻塞状态。当sleep()状态超时时,join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入就绪状态.

 

 

  • 线程的生命周期

   

 

  • 常用方法:
    1. Sleep(long milis):在指定的毫秒内让当前正在执行的线程休眠(暂停执行)。
    2. join();指等待t线程终止
    3. yield();暂停当前正在执行的现场能对象,并执行其他线程
    4. interrupt();中断某个线程,这种结束方法比较粗暴,如果t线程打开了某个资源还没有来得及关闭也就是run方法还没有执行完就强制结束线程,会导致资源无法关闭
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值