多线程

多线程,第1张

目录

一、线程是什么?

二、进程和线程的区别

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

缺陷/注意事项:

四、线程的状态:

五、创建线程的方法

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/919779.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-16
下一篇 2022-05-16

发表评论

登录后才能评论

评论列表(0条)

保存