两种方法:

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-两种创建多线程的方法、以及在匿名内部类创建线程的更多相关文章

  1. Java并发编程(一) 两种实现多线程的方法(Thread,Runnable)

    Java中实现多线程的方法有两种: 继承Thread类和实现Runnable方法,并重写Run方法,然后调用start()方法启动线程.使用Runnable会比Thread要好很多,主要是以下三个原因 ...

  2. Java中有两种实现多线程的方式以及两种方式之间的区别

    看到一个面试题.问两种实现多线程的方法.没事去网上找了找答案. 网上流传很广的是一个网上售票系统讲解.转发过来.已经不知道原文到底是出自哪里了. Java中有两种实现多线程的方式.一是直接继承Thre ...

  3. Java中两种实现多线程方式的对比分析

    本文转载自:http://www.linuxidc.com/Linux/2013-12/93690.htm#0-tsina-1-14812-397232819ff9a47a7b7e80a40613cf ...

  4. Java学习路径及练手项目合集

    Java 在编程语言排行榜中一直位列前排,可知 Java 语言的受欢迎程度了. 实验楼上的[Java 学习路径]中将首先完成 Java基础.JDK.JDBC.正则表达式等基础实验,然后进阶到 J2SE ...

  5. 对Java代码加密的两种方式,防止反编译

    使用Virbox Protector对Java项目加密有两种方式,一种是对War包加密,一种是对Jar包加密.Virbox Protector支持这两种文件格式加密,可以加密用于解析class文件的j ...

  6. 细说java中Map的两种迭代方式

    曾经对java中迭代方式总是迷迷糊糊的,今天总算弄懂了.特意的总结了一下.基本是算是理解透彻了. 1.再说Map之前先说下Iterator: Iterator主要用于遍历(即迭代訪问)Collecti ...

  7. Servlet访问路径的两种方式、Servlet生命周期特点、计算服务启动后的访问次数、Get请求、Post请求

    Servlet访问路径的两种方式: 1:注解 即在Servlet里写一个@WebServlet @WebServlet("/myServlet") 2:配置web.xml < ...

  8. 48-设置tomcat虚拟路径的两种方法(Eclipse、tomcat、IDEA)

    设置tomcat虚拟路径的两种方法(Eclipse.tomcat.IDEA) 三种方式设置虚拟服务器路径如果我们要实现一个上传文件的功能,但是又想要上传的文件不会随着自己web服务器的重启而不能访问了 ...

  9. 从上面的集合框架图可以看到,Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射

    从上面的集合框架图可以看到,Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射.Collection 接口又有 3 ...

  10. Java学习路径(抛光砖)

    这就是我刚刚在五孔问答中找到的Java学习路线图抛光砖价格.我个人认为,这条Java学习路线是可以的.它是2018年相对较新的Java学习路线,更符合企业就业标准. Java学习路径的第一阶段:Jav ...

随机推荐

  1. Vmware-Centos7-NAT 网络配置

    首先一句话总结 NAT模式下,将VMware Network Adapter VMnet8的IP改为与虚拟机IP同一网段即可. 操作步骤 1. 打开虚拟网络编辑器 2. 配置NAT 选择NAT模式,取 ...

  2. Vue开发组件之替代marquee标签,超出宽度文字横向滚动效果

    一.npm 安装 如果你想安装插件(自己写的)安装 install dependencies npm i marquee-components 使用 在main.js引入 import marquee ...

  3. Vue.js与Node.js一起打造一款属于自己的音乐App(收藏)

    更多内容请见原文,原文转载自:https://blog.csdn.net/weixin_44519496/article/details/118755888

  4. 基于JavaFX图形界面演示的迷宫创建与路径寻找

    事情的起因是收到了一位网友的请求,他的java课设需要设计实现迷宫相关的程序--如标题概括. 我这边不方便透露相关信息,就只把任务要求写出来. 演示视频指路: 视频过审后就更新链接 完整代码链接: 网 ...

  5. Kubebuilder简介与架构

    什么是Kubebuilder Kubebuilder是一个用Go原因构建Kubernetes APIs的框架,通过使用KubeBuilder,用户可以遵循一套简单的编程框架,使用CRD构建API.Co ...

  6. UiPath从入门到精通视频教程

    匠厂出品,必属精品   Uipath中文社区qq交流群:465630324 微信小程序搜索RPA之家小店可以购买相关RPA的课程,现在联系有优惠 官网:https://rpazj.com uipath ...

  7. Linux远程连接工具和运行级别

    常用的Linux远程连接工具: xshell MobaXterm windows的命令行工具 Linux的运行级别 linux有七个运行级别 0----所有的服务都不开启,代表的式关机 1---代表的 ...

  8. [零基础学IoT Pwn] 复现Netgear WNAP320 RCE

    [零基础学IoT Pwn] 复现Netgear WNAP320 RCE 0x00 前言: 这是[零基础学IoT Pwn]的第二篇,上篇我们搭好了仿真环境后,模拟运行了Netgear WNAP320固件 ...

  9. 查询效率提升10倍!3种优化方案,帮你解决MySQL深分页问题

    开发经常遇到分页查询的需求,但是当翻页过多的时候,就会产生深分页,导致查询效率急剧下降. 有没有什么办法,能解决深分页的问题呢? 本文总结了三种优化方案,查询效率直接提升10倍,一起学习一下. 1. ...

  10. 关于android sdk中monitor.exe报错的问题

    今天又是被坑的一上午.来总结一下: 1. 首先是找不到monitor的问题: 这个可能是一开始环境配置错误.所以我将android sdk重装了一下就好了 2. 第二个是找到monitor.bat发现 ...