多线程,线程与进程

实现多线程的时候:

*  1:需要继承Thread类

*  2:必须要重新run方法,指的是核心执行的逻辑

*  3:线程启动的时候不要直接调用run()方法,是要通过start()来进行调用

*  4:每次运行相同的代码,出来的结果可能不一样,原因在于多线程谁先抢占资源无法进行人为控制

*第二种实现方式:使用了代理设计模式

*  1:实现Runnable接口

*  2:重写run方法

*  3:创建Thread对象,将刚刚创建好的runnable的子类实现作为thread的构造参数

*  4:通过thread.start()进行启动

*  两种实现方式那种用的比较多

*  推荐使用第二种方式,
            1:java是单继承,将继承关系留给最需要的类
            2:使用runnable接口之后不需要给共享变量添加static关键字,每次创建一个对象,作为共享对象即可

线程 的生命周期:
        1、新生状态:
            当创建好当前线程对象之后,没有启动之前(调用start之前)
                ThreadDemo threadDemo =new ThreadDemo();
                TicketRunnable ticketRunnable =new TicketRunnable();
        2、就绪状态:准备开始执行,并没有执行,表示调用start方法之后
                当对应的线程创建完成,且调用start方法之后,所有的线程会添加到一个就绪队列中,所有的线程会
                    同时抢占cpu的资源

        3、运行状态:当前进程获取到cpu资源之后,就绪队列中的线程会去抢占cpu的资源,谁先抢占到谁先执行
                在执行的过程中就叫做运行状态抢占到cpu资源,执行代码逻辑开始
        4、死亡状态:当运行中的线程未能执行完所有的代码逻辑或者因为异常情况导致程序结束叫做死亡状态
                    进入的方式:
                            1、正常运行完成且结束
                            2、人为中断执行,比如使用stop方法
                            3、程序抛出未捕获的异常
        5、阻塞状态:当程序运行过程中,发生某些异常情况,导致当前线程无法在顺利执行下去,此时会进入
                阻塞状态,进入阻塞状态的原因消除之后,所有的阻塞队列会再次进入到就绪状态中,随机抢占cpu
                的资源,等待执行
                进入的方式:
                    sleep方法
                    等待io资源



©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容