多线程学习笔记(1)-Thread类和Runnable接口

多线程

  • 程序是静态的
  • 进程是程序执行的过程
  • 一个进程可以有至少一个或多个线程
    在这里插入图片描述

Thread类

  • 自定义线程继承Thread类
  • 重写run()方法,编写线程执行体
  • 创建线程对象,调用start()方法启动线程

代码例子

 //线程创建方式一:继承Thread类,重写run()方法,调用start开启线程
public class TestThread1 extends Thread{
    @Override
    //run方法线程体
    public void run() {
        for (int i = 0; i < 5; i++) {
            System.out.println("run"+i);
        }
    }

    //main主线程
    public static void main(String[] args) {
        //创建一个线程对象
        TestThead1 testThead1 = new TestThead1();
        //调用start()方法开启线程
        testThead1.start();
        for (int i = 0; i < 5 ; i++) {
            System.out.println("main"+i);
        }
    }
}

运行结果
在这里插入图片描述
在多线程程序运行中,线程由CPU调度交叉执行每个线程

实现Runnable接口

  • 定义MyRunable类实现Runable接口
  • 实现run()方法,编写线程执行体
  • 创建线程对象,调用start()方法启动线程

代码例子

//创建线程方式2:实现runnnable接口,重写run方法,
// 执行线程需要丢入runnable接口实现类,调用start方法
public class TestThread2 implements Runnable{
    @Override
    //run方法线程体
    public void run() {
        for (int i = 0; i < 5; i++) {
            System.out.println("run"+i);
        }
    }

    //main主线程
    public static void main(String[] args) {
        //创建runnable接口的实现类对象
        TestThread2 testThread2 = new TestThread2();
        //创建线程对象,通过线程对象来开启我们的线程
        Thread thread = new Thread(testThread2);
        thread.start();

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

结果
在这里插入图片描述

总结

继承Thread类

子类继承Thread类具备多线程能力;
启动线程:子类对象.start()
**不建议使用**:避免OOP单继承局限性 

实现Runnable接口

实现接口Runnable具有多线程能力
启动线程:传入目标对象+Thread对象.start()
**推荐使用**:避免单继承局限性,方便同一对象被多个线程使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值