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

多线程与高并发(1)——线程的基本知识(实现,常用方法,状态)

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

多线程与高并发(1)——线程的基本知识(实现,常用方法,状态)

一、线程的实现方式

线程的实现方式有以下几种:

1.继承Thread类,重写run方法
2.实现Runnable接口,重写run方法
3.lambda表达式
4.通过Callable和FutureTask创建线程
5.通过线程池创建线程

这里我们只总结前三点,后面两点后续会在多线程部分详细总结。
废话不多说,直接上代码:

public class GreatThread {

    static class MyThread extends Thread {
        @Override
        public void run() {
            System.out.println("我是继承Thread得来的");
        }
    }

    static class MyRun implements Runnable {
        @Override
        public void run() {
            System.out.println("我是实现Runnable得来的");
        }
    }

    public static void main(String[] args) {
        new MyThread().start();
        new Thread(new MyRun()).start();
        new Thread(()->
        {
            System.out.println("我是lambda表达式得来的");
        }).start();
    }
}

运行结果如下:

我是继承Thread得来的
我是实现Runnable得来的
我是lambda表达式得来的

阿里代码规范提示:线程资源最好通过线程池提供,不允许在应用中自行显式创建线程。
说明: 使用线程池的好处是减少在创建和销毁线程上所花的时间以及系统资源的开销,解决资源不足的问题。如果不使用线程池,有可能造成系统创建大量同类线程而导致消耗完内存或者“过度切换”的问题。
lambda表达式说明:

基本语法:
 (parameters) -> expression
或
(parameters) ->{ statements; }

常见示例:

// 1. 不需要参数,返回值为 5  
() -> 5  
  
// 2. 接收一个参数(数字类型),返回其2倍的值  
x -> 2 * x  
  
// 3. 接受2个参数(数字),并返回他们的差值  
(x, y) -> x – y  
  
// 4. 接收2个int型整数,返回他们的和  
(int x, int y) -> x + y  
  
// 5. 接受一个 string 对象,并在控制台打印,不返回任何值(看起来像是返回void)  
(String s) -> System.out.print(s)

综上可以看出,lambda表达式实现多线程和Runnable接口本质上是一样的。

二、线程的状态&&常用方法

线程的状态可以参考:线程的生命周期
这里我再结合常用方法详细的画一下线程的运行图,如图所示:

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

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

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