什么是多线程/怎么使用多线程(Thread/Runnable)

一.什么是多线程

  • 首先我们要分清什么是线程什么是进程
  • 进程
    应用程序的的执行实例
    有独立的内存空间和系统资源
  • 线程
    CPU调度和分派的基本单位
    应用程序的执行示例
  • 什么是多线程?
    a.如果在一个进程中同时运行了多个线程,用来完成不同的工作,则称之为“多线程
    b.多个线程交替占用CPU资源,而非真正的并行执行
  • 主线程:
    a.main()方法为主线程的入口
    b.产生其他子线程的线程
    c.必须最后执行完成,因为它执行各种关闭动作
  • 显示主线程名并修改
public static void main(String args[]) {
		Thread t= Thread.currentThread(); //创建主线程对象
		System.out.println("当前线程是: "+t.getName()); //获得主线程名
		t.setName("MyJavaThread"); //修改主线程名为MyJavaThread
		System.out.println("当前线程名是: "+t.getName()); }//再次获得主线程名

二. 怎么使用多线程?

  • Java中提供了Thread线程类,继承Thread的类就是线程类,可以实例化Thread类来创建子线程
  • 继承Thread的优势:编写简单,可直接操作线程/适用于单线程
  • Java中还提供了Runnable接口,通过绑定Runnable接口的类,也是线程类
  • 绑定Runnable接口的优势:避免单继承的局限性/便于资源共享
  • 代码示例——通过继承Thread类来创建子线程
public class TestThread extends Thread{//继承线程类
    @Override
    public void run() {//重写run方法
        for (int i = 0; i <20; i++) {
            System.out.println("你好:"+Thread.currentThread().getName());
        }
    }

    public static void main(String[] args) {
        TestThread testThread=new TestThread();//实例化TestThread
        Thread thread=new Thread(testThread,"Tom");//创建新的线程对象,将子类对象载入线程中,并命名Tom
        Thread thread1=new Thread(testThread,"jack");创建新的线程对象,将子类对象载入线程中,并命名jack
        thread.start();//开启Tom子线程
        thread1.start();//开启jack子线程

    }
}
  • 代码示例——通过绑定Runnable接口来创建子线程
public class TestRunable implements Runnable {//绑定Runnable接口
    @Override
    public void run() {//重写run方法
        for (int i = 0; i <20; i++) {
            System.out.println("你好:"+Thread.currentThread().getName());
        }
    }
    public static void main(String[] args) {
        TestThread testThread=new TestThread();//实例化绑定接口对象
        Thread runnable=new Thread(testThread,"TOM");//创建新线程并载入子类线程对象并命名Tom
        Thread runnable1=new Thread(testThread,"JACK");//创建新线程并载入子类线程对象并命名JACK
        runnable.start();//开启子线程
        runnable1.start();//开启子线程
    }
}

三.直接调用run()与start()的区别

  • 直接调用run()方法,只是在主线程执行一个方法
  • 而调用start()方法,则是启动一个新线程来执行run方法
    在这里插入图片描述

四.线程的状态

在这里插入图片描述

五.线程的常用方法 在这里插入图片描述

1.join方法只适用于主线程中来操作子线程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值