使用JAVA8新特性:Lambda表达式====简写多线程

一:什么是匿名内部类
作用:临时创建一个类子类对象的快捷方式
格式:new 父类/接口(){
重写方法
};

二:代码举例:使用匿名内部类的方式开启线程
普通写法:

class Runnable1 implements Runnable{
 @Override
 public void run() {
 for(int i = 0 ; i < 10 ;i++){
 System.out.println("播放音乐"+i);
 }
 }
}
public class RunnableTest {
 public static void main(String[] args) {
 for(int i = 0 ; i < 10 ; i++){
 System.out.println("玩游戏"+i);
 if(i==5){
 Thread th1 = new Thread(new Runnable1());
 th1.start();
 }
 }
 }
}

匿名内部类写法

class RunnableTest {
    public static void main(String[] args) {
        for(int i = 0 ; i < 10 ; i++){
            System.out.println("玩游戏"+i);
            if(i==5){
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        for(int i = 0 ; i < 10 ;i++){
                            System.out.println("播放音乐"+i);
                        }
                    }
                }).start();
            }
        }
    }}

什么是lambda表达式:
使用lambda表达式的前提

  1. 使用Lambda必须具有接口,且要求接口中有且仅有一个抽象方法。
    无论是JDK内置的Runnable、Comparator接口还是自定义的接口,只有当接口中的抽象方法存在且唯一时,才可以使用Lambda。
  2. 方法的参数或局部变量类型必须为Lambda对应的接口类型,才能使用Lambda作为该接口的实例。

//多线程基础写法

() -> System.out.println("多线程任务执行!")

遍历:利用IntStrream.range(a,b).foreach()

class RunnableTest {

    public static void main(String[] args) {
        for(int i = 0 ; i < 10 ; i++){
            System.out.println("玩游戏"+i);
            if(i==5){
                IntStream.range(1,5).forEach(a -> System.out.println(a +"播放音乐"));

            }
        }
    }
}

部分结果:

玩游戏3
玩游戏4
玩游戏5
1播放音乐
2播放音乐
3播放音乐
4播放音乐
玩游戏6
玩游戏7

你可能感兴趣的:(多线程,Java新特性,java)