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和分号。注意:要省略必须三个一起省略。