使用匿名内部类和lamda的方式创建线程
1、匿名内部类的方式
1 /**
2 *匿名内部类的方式启动线程
3 */
4 public class T2 {
5 public static void main(String[] args) {
6 //集成类的方式
7 new Thread(){
8 public void run(){
9 System.out.println("thread1 start ... ");
10 }
11 }.start();
12
13 //实现接口的方式
14 new Thread(new Runnable() {
15 @Override
16 public void run() {
17 System.out.println("thread2 start .... ");
18 }
19 }).start();
20
21 }
22 }
第1段相当于继承Thread的方式;第二段相当于实现Runnable的方式。
如果我们将上面两段代码合并呢?
1 package com.yy.concurrent.base1;
2
3 /**
4 *匿名内部类的方式启动线程
5 */
6 public class T2 {
7 public static void main(String[] args) {
8
9
10 new Thread(new Runnable() {
11 @Override
12 public void run() {
13 System.out.println("runnable");
14 }
15 }){
16 public void run(){
17 System.out.println("sub");
18 }
19 }.start();
20
21 }
22 }
此时输出sub,此时相当于将一个实现了runnable接口的类对象传入Thread子类的构造方法,并且在这个子类中重写了run方法。因此原本的run()方法被覆盖。
2. Lambda方式
public class Test{
public static void main(String[] args) {
/*
匿名内部类的方式
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("nihao");
}
}).start();
System.out.println("你好");
*/
//lambda的方式
new Thread(()-> {
for(int i = 1 ; i<100 ; i++){
System.out.println("It is a lambda function!");
}
}).start();
}
}
此时相当于本文第一段代码中的实现接口的方式。
另外可参考:https://blog.csdn.net/Topdandan/article/details/78347865
使用匿名内部类和lamda的方式创建线程的更多相关文章
- Java并发包——使用新的方式创建线程
Java并发包——使用新的方式创建线程 摘要:本文主要学习了如何使用Java并发包中的类创建线程. 部分内容来自以下博客: https://www.cnblogs.com/dolphin0520/p/ ...
- python用类的方式创建线程---自创建类
用类的方式创建线程---自创建类 import threadingimport time class MyThread(threading.Thread):#自建MyThread类继承threadin ...
- 多线程01.newThread的方式创建线程
1.java应用程序的main函数是一个线程,是被jvm启动的时候调用,线程的名字叫main 2.实现一个线程,必须创建一个thread实例,override run方法,并且调用start方法. 3 ...
- 使用Callable接口创建线程和使用线程池的方式创建线程
1.使用Callable接口的方式实现多线程,这是JDK5.0新增的一种创建多线程的方法 package com.baozi.java2; import java.util.concurrent.Ca ...
- 牛客网Java刷题知识点之四种不同的方式创建线程
不多说,直接上干货! 有4种方式可以用来创建线程: 第一种:继承Thread类,重写run方法 第二种:实现Runnable接口,并实现该接口的run方法(一般我们在编程的时候推荐用这种) 第三种:实 ...
- python 以面向对象的方式创建线程 实现售票系统
---恢复内容开始--- 转载或借鉴请注明转自http://www.cnblogs.com/FG123/p/5068556.html 谢谢! 通过面向对象的方法实现多线程,其核心是继承thread ...
- 创建线程的一般方式和匿名内部类方式对比——实现runnable接口,重新run方法
启动:使用静态代理设计模式 优点:可同时实现继承,避免单继承局限性 一般方式: Programer.java /** * 真实角色 * * @author :liuqi * @date :2018-0 ...
- 创建线程的一般方式和匿名内部类方式对比——继承thread类,重写run()方法
第一种:继承thread类,重写run()方法 一般方式:Demo01.java /** * 创建线程的第一种方式:继承thread类,重写run()方法 * * @author :liuqi * @ ...
- Java学习笔记-多线程-创建线程的方式
创建线程 创建线程的方式: 继承java.lang.Thread 实现java.lang.Runnable接口 所有的线程对象都是Thead及其子类的实例 每个线程完成一定的任务,其实就是一段顺序执行 ...
随机推荐
- mac下将python2.7改为python3
mac下将python2.7改为python3 查看当前电脑python版本 python -V 修改.bash_profile文件 vi ~/.bash_profile //编辑bash_profi ...
- [hdu7032]Command and Conquer: Red Alert 2
令$(x,y,z)$为狙击手的坐标,其攻击范围即以$(x,y,z)$为中心的$(2k)^{3}$的立方体 为了避免$k$的影响(二分答案会多一个$\log$),不妨将其变为以$(x,y,z)$为左下 ...
- jmeter链接数据库,信息全部填写正确,运行之后没有结果
之前遇到一个很苦恼的问题,jmeter链接数据库,数据库填写的资料全部都没有问题,在其他电脑jmeter上都可以正常链接,但是在我的电脑上运行却总是不出结果, 用mysql链接数据库也一切正常,一直找 ...
- HDU 6987 - Cycle Binary(找性质+杜教筛)
题面传送门 首先 mol 一发现场 AC 的 csy 神仙 为什么这题现场这么多人过啊啊啊啊啊啊 继续搬运官方题解( 首先对于题目中的 \(k,P\),我们有若存在字符串 \(k,P,P'\) 满 ...
- Redis list操作命令
rpop命令 用于移除列表的最后一个元素,返回值为移除的元素.当列表不存在时,返回nil. 基本语法: rpop key_name LPOP:移除并返回列表第一个元素 RPOP:移除并返回列表最后一个 ...
- IDEA 注释模板配置
配置创建类的注释模板 Ctrl + Shift + a --> File and Code Templates // 快捷定位配置 // 路径:File --> Settings --&g ...
- python-django-查询详解
倒数第二条性质可以实现链式的调用,通过第一次的过滤还可以再过滤倒数第一条就是结果集从数据库中查询出来之后不会再进行数据库的查询的我们使用的object就是模型管理器manager的一个对象 obj = ...
- GWAS初探
原理 GWAS 的主要方法学依据是归纳法中的共变法,是探究复杂因果关系最主要的科学思维和方法.所谓共变法,是通过考察被研究现象发生变化的若干场合中,确定是否只有一个情况发生相应变化,如果是,那么这个发 ...
- 55. Binary Tree Preorder Traversal
Binary Tree Preorder Traversal My Submissions QuestionEditorial Solution Total Accepted: 119655 Tota ...
- 浅谈Facebook的服务器架构
导读:毫无疑问,作为全球最领先的社交网络,Facebook的高性能集群系统承担了海量数据的处理,它的服务器架构一直为业界众人所关注.CSDN博主yanghehong在他自己最新的一篇博客< Fa ...