栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

多线程

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

多线程

目录

一、线程是什么?

二、进程和线程的区别

三、多线程的优势/好处?(使用场景)

缺陷/注意事项:

四、线程的状态:

五、创建线程的方法

方法一、继承Thread类

方法二、实现Runnable接口

六、Thread和Runnable的区别和联系?

一、线程是什么?

线程的实现方式有多种:          

  • 内核线程:Java中的线程,是基于内核线程的轻量级实现(轻量级进程)
  • 用户线程:有程序自己来实现线程,包括线程的调度等。

二、进程和线程的区别(重点)
  1. 多个进程的内存是隔离开的,一个进程中的多个线程,可以共享内存(进程包含线程)
  2. 进程是系统分配资源的最小单位;线程是系统调度cpu执行的最小单位
  3. 线程的创建,销毁代价比进程小,状态转换进程的开销大于线程
  4. 线程有bug可能会造成整个进程挂断,进程间是独立运行的(可能存在进程通信)

三、多线程的优势/好处?(使用场景)
  • 充分利用cpu资源,提高执行效率
  • io等阻塞时(如果希望能同时接收输入)

缺陷/注意事项:
  1. 线程的创建/销毁也是具有一定系统开销:所以一般用于执行耗时比较长的任务
  2. 增加编码的复杂程度

四、线程的状态:
  1. New:创建态
  2. Runnable: 可运行态(程序无法判断某个时间时就绪还是运行态)
  3. Waiting: 等待,调用wait方法会进入该状态
  4. Timed_Waiting: 超时等待
  5. Blocked: 阻塞
  6. Terminated: 工作全部完成之后,会处于这个状态

五、创建线程的方法

方法一、继承Thread类
  public static void main(String[] args) {
        //创建一个线程
        My my = new My();
        my.start();
    }
    //继承的方法:继承Thread,重写run方法
    public static class My extends Thread {
        @Override
        public void run() {
            System.out.println("我的run方法");
        }
    }

使用一个匿名内部类,属于继承Thread但没有名称的类

public static void main(String[] args) {
    //使用一个匿名内部类
    Thread t=new Thread(){//属于继承Thread但没有名称的类
        @Override
        public void run() {
            System.out.println("匿名内部类");
        }
    };
    t.start();
}

方法二、实现Runnable接口
 private static class MyRunnable implements Runnable{
        @Override
        public void run() {
            System.out.println("我的run");
        }
    }

    public static void main(String[] args) {
        //实现Runnable写法1
        Thread t = new Thread(new MyRunnable());
        t.start();
}

重写Runnable的run方法

 Thread t2=new Thread(new Runnable() {
        @Override
        public void run() {
            System.out.println("匿名run");
        }
    });
    t2.start();
}
方法三、实现Callable接口

六、Thread和Runnable的区别和联系?
Thread 类描述了一个线程;Runnable 描述了一个任务.
在创建线程的时候需要指定线程完成的任务, 可以直接重写 Thread 的 run 方法, 也可以使用 Runnable 来描述这个任务.

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/879607.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号