zoukankan      html  css  js  c++  java
  • java-线程

    一.线程:一个进程有多个线程,线程之间资源共享,线程是系统运行能够调度的最小单位。

    二.线程中的并行:指两个或者多个事件在同一时刻发生;并行:指两个或多个事件在同一时间间隔发生

    三.线程的生命周期:

      1.新建态:使用new 创建一个线程对象,仅在堆中分配内存空间,在调用starts方法之前。线程没有启动,仅仅是一个线程对象而已。

                      Thread thread = new Thread();

             线程对象调用starts进入可运行态。

      2.可运行态:运行态:线程对象获得jvm调度,如果存在多个cpu,那么允许多个线程并行执行。

                      就绪态:线程对象调用starts方法后,等待jvm调度,此时线程并没有运行

                 thread.starts();

      3.阻塞态:正在运行的线程因为某些原因放弃cpu,暂时停止运行,就会进入阻塞态。此时JVM不会给线程分配cpu,直到线程重新进入就绪态,才有机会转到运行态;

                        阻塞态只能先进入就绪态,不能直接转为运行态。

           阻塞态情况:1.当A线程处于运行过程中时,试图获取同步锁,但锁却被B线程获取,此时jvm把线程A存入到对象的锁池中,A线程进入阻塞态。

                    2.当线程在运行时发出IO请求,此时进入阻塞态;

      4.等待态:线程对象调用无参的wait()方法(等待状态只能被其他线程唤醒)

                     当线程处于运行中时调用wait()方法,jvm就把当前线程存入到对象锁池中

      5.计时等待态:线程对象调用了带参数的wait(long time),sleep(long time)方法。

                             1. 当线程处于运行中时调用wait(long time)方法,jvm就把当前线程存入到对象锁池中

           2.调用了sleep(long time);

                             wait和sleep的区别:1.wait是对象方法,sleep是线程方法

                                                              2.线程对象调用wait方法,会放弃对象锁;sleep不会

                    3.线程对象调用wait()方法后必须调用notify和notifyAll唤醒,且必须位于同步代码块中或同步方法中

      6.终止态:也称为死亡状态,表示线程终止。

                     1.正常执行run方法而退出

                     2.遇到异常

                线程一旦死亡,不能调用start方法,否则会报异常。

  • 相关阅读:
    WebBrowser获取完整COOKIE
    验证码
    fee photo
    net reactor加密源码保软件安全-net reactor使用教程
    C#支付宝多次回调问题
    C# 获取程序运行目录
    2DToolkit官方文档中文版打地鼠教程
    Unity开发Oculus游戏
    游戏Demo(持续更新中...)
    使用Slua框架开发Unity项目的重要步骤
  • 原文地址:https://www.cnblogs.com/SoftwareBuilding/p/11453289.html
Copyright © 2011-2022 走看看