Java多线程编程01之Thread与Runnable的使用

多线程的概念

灵魂四问?

什么是进程呢?
答:进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个基本单位!
啥?这是人话吗?
其实这本身就是一个抽象的概念(就是对程序的以一种抽象),咱们就把它理解成程序的一次执行过程就可以了!

什么是线程呢?
一个进程可包含一个或多个线程,咱们就可以理解为它是程序执行过程的一部分就可以了!

什么是多线程呢?

就是多个线程并发执行!

如果一个子任务阻塞,程序可以将CPU调度另外一个子任务进行工作。这样CPU还在这个大任务中,而不是被调去执行其他大任务了。可以提高该大任务对CPU的利用率!

并发与并行的区别是啥呢?

并行:同时执行不同的任务。(多个大任务)
并发:交替执行不同的任务。(一个任务下的多个小任务)

进一步抽象:
并行:我边看动漫边洗衣服!(同一时刻)
并发:我看10s动漫,之后再去洗10s中衣服!(不同时刻,同一时间段!)

如何实现多线程

实现多线程的方法有多种,我这里就只介绍比较常用的两种!

方法一:继承Thread类

①编写一个类Thread1继承Thread类,实现run方法!

public class Thread1 extends Thread {
    public void run() {
        while (true) {
            System.out.println(Thread.currentThread().getName() + " is running!");
            // 一定要加try ... catch... 捕获异常,不然会报错!
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

②实例化Thread1类,并调用start方法启动线程!(会自动以新进程调用run方法)

public class TheadDemo {
    public static void main(String[] args) {
        Thread1 t1 = new Thread1();
        t1.start();
        Thread1 t2 = new Thread1();
        t2.start();
    }
}

注意:
1、同一个进程多次执行start会报错;
2、多个线程启动,启动的先后顺序是随机的;
3、线程无需关闭,run方法执行结束后,自动关闭;
4、main()函数可能早于其他线程结束,整个程序并不中止。

其执行的结果如下图所示:
在这里插入图片描述

方法二:实现Runnable接口

①创建类Thread2实现Runnable接口,并实现run方法

public class Thread2 implements Runnable {
    public void run() {
        while (true) {
            System.out.println(Thread.currentThread().getName() + " is running!");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

Java本身只能单继承,implements 关键字可以变相的使Java具有多继承的特性

接口只有定义(相对来说),抽象类可以有定义和实现

②创建线程对象,将实现类对象传入,调用start方法。

public class TheadDemo {
    public static void main(String[] args) {
        Thread2 target1 = new Thread2();
        Thread t1 = new Thread(target1);
        t1.start();
        Thread2 target2 = new Thread2();
        Thread t2 = new Thread(target2);
        t2.start();
    }
}

其执行的结果如图所示:
在这里插入图片描述

以上,便是本期的全部内容,主要就是引入一下概念与大体的思路,我们下期再见!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值