前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >多线程相关概念

多线程相关概念

作者头像
Noneplus
发布2020-08-11 10:22:24
3710
发布2020-08-11 10:22:24
举报
文章被收录于专栏:开发笔记开发笔记

相关概念

  • 进程:启动一个应用程序,就会开启一个进程(微信,QQ,浏览器等等)
  • 线程:程序的执行路径
  • 进程和线程的区别:进程是在操作系统下的并发,线程是在应用程序下的并发
  • 多线程:在同一进程中开启了多个不同的执行路径,多个路径同时执行
  • 多线程好处:提高程序整体运行速度,快速响应
  • 多线程的应用场景:
    • 异步发送短信
    • 异步记录日志
    • 对耗时代码采用异步处理
  • CPU切换: 单核CPU:同一时刻只有一个线程可以工作,线程上下文切换耗费资源 多核CPU:同一时刻多个线程同时工作,上下文切换较少
  • 多线程越多越好? 小型项目:使用多线程异步 大型项目:使用MQ代替多线程
  • 用户线程和守护线程的区别:
    • 用户线程当主线程停止后,用户线程也会一直运行。thread.setDaemon(false);
    • 而守护线程当我们主线程停止后,守护线程也会停止。thread.setDaemon(true);

停止线程的方式

建议采用变量的方式停止线程

代码语言:javascript
复制
public class Thread005 extends Thread {
    private volatile boolean flag = true;

    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName());
        while (flag) {

        }
    }

    public void stopThread() {
        this.flag = false;
    }


    public static void main(String[] args) {
        Thread005 thread005 = new Thread005();
        thread005.start();
        try {
            Thread.sleep(3000);
            thread005.stopThread();
        } catch (Exception e) {

        }
    }
}

多线程的5种状态

  • 新建一个线程,new Thread的时候为新建的状态
  • 调用到start方法的时候,当前线程状态为就绪状态,需要等待cpu的切换。
  • 当cpu切换能够调用到该线程的时候,当前线程的状态为运行状态。
  • 在线程调用sleep方法的时候,当前线程线程的状态为阻塞状态,当休眠的时候过了的时候有需要从新等待cpu调度,从就绪状态到运行。
  • 当线程调用stop方法或者run方法代码执行结束的时候当前线程的状态为死亡状态。
image-20200806115931281
image-20200806115931281

join方法

当在主线程当中执行到t1.join()方法时,就认为主线程应该把执行权让给t1

代码语言:javascript
复制
class  Main
{
    public static void main(String[] args) {
        Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                for (int i = 0; i <10 ; i++) {
                    System.out.println("子线程...");
                }
            }
        });

        thread.start();

        try {
            thread.join();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        for (int i = 0; i <10 ; i++) {
            System.out.println("main线程.....");
        }

        System.out.println("主线程销毁....");

    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-08-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 相关概念
  • 停止线程的方式
  • 多线程的5种状态
  • join方法
相关产品与服务
短信
腾讯云短信(Short Message Service,SMS)可为广大企业级用户提供稳定可靠,安全合规的短信触达服务。用户可快速接入,调用 API / SDK 或者通过控制台即可发送,支持发送验证码、通知类短信和营销短信。国内验证短信秒级触达,99%到达率;国际/港澳台短信覆盖全球200+国家/地区,全球多服务站点,稳定可靠。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档