多线程

多线程

并发:交替进行

并行:同时进行

创建多线程:
  1. 创建一个继承Thread类的类
  2. 重写Thread类中的run()方法
  3. 创建Thread类的子类对象
  4. 调用Thread类的start()方法
//使用匿名内部类创建多线程
public class Thread01 {
    public static void main(String[] args) {
        new Thread(){
            @Override
            public void run() {
                System.out.println("创建了多线程");
            }
        }.start();
    }
}
  1. 创建一个Runnable接口的实现类
  2. 在实现类中重写Runnable接口的run方法,设置线程任务
  3. 创建一个Runnable接口的实现类对象
  4. 创建Thread类对象,构造方法中传递Runnable接口的实现类对象
  5. 调用Thread类中的start方法,开启新线程执行run方法
//使用匿名内部类创建多线程
public class Thread01 {
    public static void main(String[] args) {
                new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println(Thread.currentThread().getName()+"创建了新线程");
            }
        }).start();
    }
}
实现Runnable接口的好处:
  1. 避免了单继承的局限性

    ​ 一个类只能继承一个类,类继承Thread类就不能继承其他的类。

  2. 增强了程序的扩展性,降低了程序的耦合性(解耦)

    ​ 实现Runnable接口的方法,把设置线程任务和开启新线程进行了分离(解耦)。

run和start区别:
  1. 直接调用线程类的run()方法,它就会被当做一个普通的函数调用,程序中任然只有主线程这一个线程。也就是说,star()方法可以异步地调用run()方法,但是直接调用run()方法确实同步的,因此也就不能达到多线程的目的。 run()和start()的区别可以用一句话概括:单独调用run()方法,是同步执行;通过start()调用run(),是异步执行。
  2. run只是Thread里面的一个普通方法,start是启动线程的方法。

获取线程的名称:Thread.currentThread().getName()

多线程根据优先级先后实现方法,如果优先级相同,cpu随机执行方法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值