【Java】学习路径46-两种创建多线程的方法、以及在匿名内部类创建线程
两种方法:
1、创建一个继承自Thread的线程类,然后再main(不限)中构造这个线程类对象。方法在之前讲过。
2、创建一个使用Runnable接口的线程类,然后在main(不限)中构造这个Runnable线程类,再通过构造Thread类,把线程类传入即可。
实例:
线程类(使用Runnable接口):
public class Runnable_Test002 implements Runnable{
@Override
public void run() {
}
}
main方法中调用:
Runnable_Test002 trs = new Runnable_Test002();
Thread trs1 = new Thread(trs);
trs1.start();
我们还可以多次构造Thread,引入同一个Runnable对象(trs),这样可以做到多线程计算同一道题的效果。
两种方法比较:
使用Runnable还可以继承其他类。
Runnable可以非常方便的实现多线程的数据的共享。
如此一来,你就可以创建多个线程处理同一个问题,并且共享进度。
匿名内部类创建线程:
目的就是简化一下代码,看起来不那么臃肿而已。
1-Runnable的匿名内部类
我们先来看看是怎么做的,我们只需要在main中写:
Runnable r1 = new Runnable(){
@Override
public void run() {
while(true)
System.out.println(Thread.currentThread().getName());
}
};
Thread t = new Thread(r1,"匿名内部类:");
t.start();
即可。或者将最后两行改写为:
new Thread(r1,"匿名内部类:").start();
化简代码。还可以使用Lambda匿名函数简化构造函数的代码:
Runnable r1 = () -> {
while(true)
System.out.println(Thread.currentThread().getName());
};
最终的效果:
Runnable r1 = () -> {
while(true)
System.out.println(Thread.currentThread().getName());
};
new Thread(r1,"匿名内部类:").start();
2-Thread的匿名内部类
Thread t1 = new Thread() {
@Override
public void run() {
while(true)
System.out.println(Thread.currentThread().getName());
}
};
t1.start();
如果连t1后续也不需要操作了,那么可以把t1也“匿名”了。
new Thread() {
@Override
public void run() {
while(true)
System.out.println(Thread.currentThread().getName());
}
}.start();
还可以使用Lambda再做简化:
new Thread(() -> {
while(true)
System.out.println(Thread.currentThread().getName());
}).start();
【Java】学习路径46-两种创建多线程的方法、以及在匿名内部类创建线程的更多相关文章
- Java并发编程(一) 两种实现多线程的方法(Thread,Runnable)
Java中实现多线程的方法有两种: 继承Thread类和实现Runnable方法,并重写Run方法,然后调用start()方法启动线程.使用Runnable会比Thread要好很多,主要是以下三个原因 ...
- Java中有两种实现多线程的方式以及两种方式之间的区别
看到一个面试题.问两种实现多线程的方法.没事去网上找了找答案. 网上流传很广的是一个网上售票系统讲解.转发过来.已经不知道原文到底是出自哪里了. Java中有两种实现多线程的方式.一是直接继承Thre ...
- Java中两种实现多线程方式的对比分析
本文转载自:http://www.linuxidc.com/Linux/2013-12/93690.htm#0-tsina-1-14812-397232819ff9a47a7b7e80a40613cf ...
- Java学习路径及练手项目合集
Java 在编程语言排行榜中一直位列前排,可知 Java 语言的受欢迎程度了. 实验楼上的[Java 学习路径]中将首先完成 Java基础.JDK.JDBC.正则表达式等基础实验,然后进阶到 J2SE ...
- 对Java代码加密的两种方式,防止反编译
使用Virbox Protector对Java项目加密有两种方式,一种是对War包加密,一种是对Jar包加密.Virbox Protector支持这两种文件格式加密,可以加密用于解析class文件的j ...
- 细说java中Map的两种迭代方式
曾经对java中迭代方式总是迷迷糊糊的,今天总算弄懂了.特意的总结了一下.基本是算是理解透彻了. 1.再说Map之前先说下Iterator: Iterator主要用于遍历(即迭代訪问)Collecti ...
- Servlet访问路径的两种方式、Servlet生命周期特点、计算服务启动后的访问次数、Get请求、Post请求
Servlet访问路径的两种方式: 1:注解 即在Servlet里写一个@WebServlet @WebServlet("/myServlet") 2:配置web.xml < ...
- 48-设置tomcat虚拟路径的两种方法(Eclipse、tomcat、IDEA)
设置tomcat虚拟路径的两种方法(Eclipse.tomcat.IDEA) 三种方式设置虚拟服务器路径如果我们要实现一个上传文件的功能,但是又想要上传的文件不会随着自己web服务器的重启而不能访问了 ...
- 从上面的集合框架图可以看到,Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射
从上面的集合框架图可以看到,Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射.Collection 接口又有 3 ...
- Java学习路径(抛光砖)
这就是我刚刚在五孔问答中找到的Java学习路线图抛光砖价格.我个人认为,这条Java学习路线是可以的.它是2018年相对较新的Java学习路线,更符合企业就业标准. Java学习路径的第一阶段:Jav ...
随机推荐
- Linux Cgroup v1(中文翻译)(4):Block IO Controller
Block IO Controller 1 概览 cgroup子系统blkio实现了block io控制器.无论是对存储结构上的叶子节点和还是中间节点,它对各种IO控制策略(proportional ...
- Java开发学习(三)----Bean基础配置及其作用范围
一.bean基础配置 对于bean的基础配置如下 <bean id="" class=""/> 其中,bean标签的功能.使用方式以及id和clas ...
- mysql数据恢复 根据旧备份的sql文件和当前data下的ibd文件恢复innodb引擎数据
1.使用navicat fro mysql数据库工具进行恢复 2.将原有备份的sql文件导入数据库 3.新建一个空数据库 4将备份数据库的数据表复制到新建数据库(只复制表格式) 5.在命令行模式中 u ...
- 【Redis】哨兵初始化和主观下线
在的redis启动函数main(server.c文件)中,对哨兵模式进行了检查,如果是哨兵模式,将调用initSentinelConfig和initSentinel进行初始化,initServer函数 ...
- python小题目练习(一)
题目:输出1+2+3+4+5+--+100的总数,并打印出这行式子 代码展示:# 1.定义一个初识变量total,用于后面每次循环进行累加值 total = 0# 2.利用for循环遍历累加for i ...
- 我用Python做了一个咖啡馆数据分析
在做案例前,我还想回答大家一个疑问,就是excel做数据分析可以实现Python一样的效果,那用Python的意义在哪呢? 经过这段时间学习理解,我的回答是: (https://jq.qq.com/? ...
- 使用Scrcpy投屏
下载Scrcpy: https://wwt.lanzouw.com/iAzie07bz85c官网地址: https://github.com/Genymobile/scrcpy 记录当前下载位置: 手 ...
- IIS部署的H5的单页面跳转的配置
<?xml version="1.0" encoding="UTF-8"?><configuration> <system.web ...
- 基于串口校时的数字钟设计(verilog实现)
任务: 电路图设计: 设计: 模块1:1.先设计一个计数时钟,为了仿真方便,这里把1000ns当作1s. 创建一个计数器second_lim,当计数到1000/20时清零,即1s. 秒显示器secon ...
- 平衡树——splay 一
splay 一种平衡树,同时也是二叉排序树,与treap不同,它不需要维护堆的性质,它由Daniel Sleator和Robert Tarjan(没错,tarjan,又是他)创造,伸展树是一种自调整二 ...