Java高并发之线程的实现方式,含Lamabda表达式

Java中线程实现的方式

在 Java 中实现多线程有4种手段:

1.继承 Thread 类

2.实现 Runnable 接口

3.匿名内部类

4.Lambda表达式实现

实现 Runnable 接口

package ljz;
class MyThread implements Runnable{ // 实现Runnable接口,作为线程的实现类
    private String name ;       // 表示线程的名称
    public MyThread(String name){
        this.name = name ;      // 通过构造方法配置name属性
    }
    public void run(){  // 覆写run()方法,作为线程 的操作主体
        for(int i=0;i<10;i++){
            System.out.println(name + "运行,i = " + i) ;
        }
    }
};
public class RunnableDemo01{
    public static void main(String args[]){
        MyThread mt1 = new MyThread("线程A ") ;    // 实例化对象
        MyThread mt2 = new MyThread("线程B ") ;    // 实例化对象
        Thread t1 = new Thread(mt1) ;       // 实例化Thread类对象
        Thread t2 = new Thread(mt2) ;       // 实例化Thread类对象
        t1.start() ;    // 启动多线程
        t2.start() ;    // 启动多线程
    }
};

继承 Thread 类

class MyThread extends Thread{  // 继承Thread类,作为线程的实现类
    private String name ;       // 表示线程的名称
    public MyThread(String name){
        this.name = name ;      // 通过构造方法配置name属性
    }
    public void run(){  // 覆写run()方法,作为线程 的操作主体
        for(int i=0;i<10;i++){
            System.out.println(name + "运行,i = " + i) ;
        }
    }
};
public class ThreadDemo02{
    public static void main(String args[]){
        MyThread mt1 = new MyThread("线程A ") ;    // 实例化对象
        MyThread mt2 = new MyThread("线程B ") ;    // 实例化对象
        mt1.start() ;   // 调用线程主体
        mt2.start() ;   // 调用线程主体
    }
};

匿名内部类

接口本身是不可以new的,但是通过匿名内部类接口可以new,实现run方法后整体作为参数传入Thread()。本质是要实现run方法

public static void main(String[] args) {
  //使用匿名内部类的方式,实现多线程
  new Thread(new Runnable() {
    @Override
    public void run() {
      System.out.println(Thread.currentThread().getName() + "新线程创建了!");
    }
  }).start();
}

使用Lambda表达式实现多线程

public static void main(String[] args) {//使用Lambda表达式,实现多线程
  new Thread(() -> {
    System.out.println(Thread.currentThread().getName() + "新线程创建了!");
  }).start();
}

Lambda表达式的标准格式

 (参数列表,用逗号隔开)-> {一些重写方法的代码};

Lambda的作用和目的:

     简化匿名内部类的书写。

Lambda表达式继续省略(凡是根据上下文可以推导出来的内容,都可以省略):

  • (参数列表):括号中的参数列表的数据类型,可以省略不写;
  • (参数列表):括号中的参数如果只有一个,那么数据类型和小括号( )都可以省略;
  • {一些代码}:如果大括号{ }中的代码只有一行,就可以省略大括号{ },return和分号。注意:要省略必须三个一起省略。

 

posted @ 2020-08-21 11:31  月半大熊猫  阅读(399)  评论(0编辑  收藏  举报