Day21 简单多线程

什么是多线程

线程:又称为轻量级的进程,是程序执行流程的基本单位,一个进程就是由多个 线程组成。

同进程内的多个线程可以共享计算资源(cpu 内存 磁盘 网络)

线程的本质就是运行我们要写的代码行,运行的每一行代码都是先获取cpu分片时间,cpu去执行该代码

线程 vs 进程的区别

进程:一个软件的运行,就会创建一个或者多个进程,进程就是计算资源的封装

线程:程序执行的基本单位,一个进程是由多个线程组成的,多个线程间可以共享进程中的计算资源

线程意义

1.提高并发能力

可以让两个事件同时执行

2.异步执行

不阻塞于主线程


简单线程创建

一,继承Thread完成



        //创建Thread匿名内部类
        Thread thread = new Thread(){
            //重写run方法
            @Override
            public void run() {
                //调用该类时提示该线程开始 Thread.currentThread().getName()为获得该线程名字
                System.out.println(Thread.currentThread().getName()+"开始");
                //在该方法中生成一个循环以创建一个线程
                for (int i = 0; i < 1000; i++) {
                    System.out.println("i = " + i);
                }
                //循环结束即为该线程占用结束
                System.out.println(Thread.currentThread().getName()+"结束");
            }
        };
        //设置自定义下创建的线程名为自定义线程01
        thread.setName("自定义线程01");
        //匿名内部类准备就绪
        thread.start();

        //在主方法中创建for循环占用线程
        //提示该线程开始
        System.out.println(Thread.currentThread().getName()+"开始");
        for (int j = 0; j < 1000; j++) {
            System.out.println("j = " + j);
        }
        //提示该线程结束
        System.out.println(Thread.currentThread().getName()+"结束");

 运行结果如图所示:可以证明两个线程在同时执行


二,通过Runnable()接口实现

         //创建Runnable的匿名内部类
         Runnable runnable = new Runnable() {
            //重写run方法
            @Override
            public void run() {
                System.out.println("自定义线程开始");
                for (int i = 0; i < 1000; i++) {
                    System.out.println(Thread.currentThread().getName()+"输出"+i);
                }
                System.out.println("自定义线程结束");
            }
        };
        //创建线程
        Thread thread = new Thread(runnable);
        //设置名字
        thread.setName("自定义线程01");
        //进程开始
        thread.start();
        //创建主方法中的for循环
        System.out.println("主方法开始");
        for (int i = 0; i < 1000; i++) {
            System.out.println(Thread.currentThread().getName()+"输出"+i);
        }
        System.out.println("主方法结束");

线程中的方法

1.获取线程的id name

Thread.currentThread() 获取当前运行的代码在哪一个线程中

Thread.currentThread().name() 获取当前运行的代码的线程的名字

Thread.currentThread().getId() 获取当前运行的代码的线程的id

2.sleep()

线程休眠:Thread.sleep(x) 让当前运行代码的线程睡眠毫秒,然后接着执行

3.join

将其他线程加入到当前线程中====》当前线程等待加入的线程执行完毕

thread.join(); thread为你创建的线程对象名;

4.setDemon()

默认线程为前台线程,只有所有的线程执行完毕 进程才会结束

设置当前线程 thread 为后台线程,只要前台线程(创建他的线程mian线程)结束,后台线程立即终止(不会关心 线程中的任务是否执行完毕)

thread.setDaemon(true);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值