首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

匿名线程未执行传递的runnable的run方法

匿名线程未执行传递的Runnable的run方法是指在Java中创建一个匿名线程,并将一个Runnable对象作为参数传递给该线程,但是该线程并未执行传递的Runnable对象的run方法。

Runnable是一个接口,用于定义一个可以在线程中执行的任务。当我们创建一个匿名线程时,可以通过实现Runnable接口来定义线程的任务,并将其作为参数传递给Thread类的构造函数。

下面是一个示例代码:

代码语言:txt
复制
Thread thread = new Thread(new Runnable() {
    @Override
    public void run() {
        // 在这里定义线程的任务
        System.out.println("Hello, world!");
    }
});

// 启动线程
thread.start();

在上述代码中,我们创建了一个匿名线程,并将一个实现了Runnable接口的匿名类作为参数传递给Thread类的构造函数。该匿名类中重写了run方法,定义了线程的任务,即打印"Hello, world!"。

然而,如果我们忘记调用thread.start()方法来启动线程,那么该线程将不会执行传递的Runnable对象的run方法。这意味着线程不会执行任何任务。

在这种情况下,我们可以通过调用thread.run()方法来手动执行传递的Runnable对象的run方法。但是需要注意的是,调用run方法并不会创建一个新的线程,而是在当前线程中执行Runnable对象的run方法。

总结起来,匿名线程未执行传递的Runnable的run方法是指在创建匿名线程时,忘记调用start方法来启动线程,导致传递的Runnable对象的run方法未被执行。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

线程 | Thread 和 Runnable 执行流程差异

因此,仍然需要 new 一个 Thread 类实例,将 MyRunnable 实例当作参数传递给 Thread 构造方法,最后同样通过 Thread 实例 start 方法,让 JVM 来启动线程...这里来看一下,Thread 类构造方法,Thread 类构造方法有若干个,现在主要来看它 无参构造方法传递 Runnable 类型构造方法,代码如下: public Thread() {...传递 Runnable 类型参数构造方法比无参构造方法多了一个 target 传递给 init 方法。...如果此线程是使用单独 Runnable run 对象构造,则调用该 Runnable 对象 run方法;否则,此方法执行任何操作并返回。接下来通过实例来调试分析一下。...不过 实现 Runnable 接口 方法应该更符合软件设计原则。当然了,在项目中不建议显式创建线程,更推荐是使用线程池。

52330

深入线程Thread类start()方法run()方法

如果一个线程run方法执行结束或者调用stop方法后,该线程就会死亡。对于已经死亡线程,无法再使用start方法令其进入就绪。...特别是当线程已经结束执行后,不能再重新启动。 三、run( )方法 1、run方法又是一个什么样方法run方法与start方法有什么关联?...方法执行是不是需要线程调用start()方法 上面说了,run()方法是一个普通对象方法,因此,不需要线程调用start()后才可以调用。...总结: 通过实例1和实例和我们可以知道start方法是用于启动线程,可以实现并发,而run方法只是一个普通方法,是不能实现并发,只是在并发执行时候会调用。.../简单起见,使用匿名内部类方法来创建线程 Thread thread = new Thread(){ @Override public void run() {

2.9K00
  • 线程原理和常用方法以及Thread和Runnable区别

    sleep(long millis) 创建多线程程序第二种方式-实现Runnable接口 Thread和Runnable区别 使用匿名内部类开启线程线程原理 随机性打印 CPU有了两条执行路径...**run()**调用时 run方法被压栈进来 其实是一个单线程程序(main线程,会先执行run方法执行线程去其他方法) mt.**start()**调用时会开辟一个新栈空间。...执行run方法run方法就不是在main线程执行,而是在新栈空间执行,如果再start会再开辟一个栈空间再多一个线程) 对cpu而言,cpu就有了选择权利 可以执行main方法、也可以执行两个run...,构造方法传递Runnable接口实现类对象 调用Thread类中start方法,开启新线程执行run方法 代码案例如下: /** * 1.创建一个Runnable接口实现类 * @author...实现类中,重写了run方法:用来设置线程任务。 创建Thread类对象,调用start方法:用来开启新线程。 使用匿名内部类开启线程 匿名内部类开启线程可以简化代码编码。

    22320

    【QT】解决继承QThread线程导致程序无法关闭&主线程关闭太快导致子线程方法执行

    也就是说,如果添加第五个参数,指定方法执行方式,还是对于主线程来说。因为这对象属于主线程。 事件循环,以及事件这个机制是对于线程来说,而不是对象。...阻塞线程,直到满足以下任一条件: 与此QThread对象关联线程已完成执行(即,当它从run()返回时)。如果线程已完成,此函数将返回true。如果线程还没有启动,它也会返回true。...---- Q2:主线程关闭太快导致子线程方法执行 背景 我将Q1中出现问题线程重写,采用moveToThread方法将对应移动到子线程中,在子线程中开启一个定时器,超时就去检测可用串口。...同样在主线程析构函数中发出信号,对应方法为停止这个子线程定时器。 ---- 问题产生 程序可以退出,但是发现对应线程方法并未执行。...或者,connect中使用参数**Qt::BlockingQueuedConnection,**使其在该槽方法执行完毕前,阻塞主线程,直到子线程对应槽方法执行完毕后返回。

    95510

    直接调用 Java 线程 run() 方法会发生什么?

    本文将深入探讨如果直接调用线程 run() 方法会发生什么。 先说结论:直接调用 run() 方法不会启动一个新线程,它只是普通方法调用,代码在当前线程中同步顺序执行。...回顾 Java 提供了继承 Thread 类、实现Runnable接口两种方式来实现线程,无论使用哪种方式,都需要重写 run() 方法,这是线程执行入口点。...run() 方法 vs start() 方法 run()方法 run()方法包含了线程执行代码。 直接调用run()方法不会启动一个新线程,它只是在当前线程执行run()方法体中代码。...换句话说,直接调用run()方法相当于调用一个普通方法,没有并发行为。 start()方法 start()方法会创建一个新线程,并在新线程执行run()方法。...结论 直接调用 run() 方法不会启动一个新线程,它只是普通方法调用,代码在当前线程中同步顺序执行。而调用 start() 方法则会启动一个新线程,并在该线程执行 run() 方法代码。

    21120

    java多线程-向线程传递参数三种方法

    线程传递参数方法 通过构造函数进行传递 通过变量和方法传递数据 通过回调函数传递数据 通过构造函数进行传递 在创建线程时,必须要建立一个Thread类或其子类实例。...因此,我们不难想到在调用start方法之前通过线程构造方法将数据传入线程。并将传入数据使用类变量保存起来,以便线程使用(其实就是在run方法中使用)。...通过变量和方法传递数据 class MyThread2 implements Runnable { private String name; public void setName(String...上面讨论两种向线程传递数据方法是最常用。...但这两种方法都是main方法中主动将数据传入线程。这对于线程来说,是被动接收这些数据

    2.2K10

    改变 Python 中线程执行顺序方法

    上面的代码中只能保证每个线程都运行完整个 run 函数,但是线程启动顺序、run 函数中每次循环执行顺序都不能确定。...总结 每个线程默认有一个名字,尽管上面的例子中没有指定线程对象 name,但是 python 会自动为线程指定一个名字。 当线程 run() 方法结束时该线程完成。...此类线程特点是,当程序中主线程及所有非守护线程执行结束时,执行完毕守护线程也会随之消亡,程序将结束运行。...但有时候,我们想让某个子线程执行,然后再让主线程执行代码,该如何实现呢? 很简单,通过调用线程对象 join() 方法即可。...以上就是改变 Python 中线程执行顺序方法详细内容,更多关于改变 Python 中线程执行顺序资料请关注179885.Com其它相关文章!

    2K40

    Java 线程基本知识

    继承Thread类并且重写run方法 启动线程时候需要使用方法是start() 不能直接调用run()方法 主要方法 - start() 启动线程 - Thread.currentThread()...("Thread "); } } } 实现Runnable接口,并且实现run()方法 Runnable接口中只设定了一个run()方法,所以要启用线程需要new 一个...Thread 然后再其构造方法传递Runnable 因为单继承多实现原则,避免了单继承局限性,继承接口实现了线程对象和线程任务分离,有利于解耦 示例 ``` public class...}).start(); ``` 线程池 开辟一块内存空间,里面存放了众多(死亡)线程,池中线程执行调度由池管理器来处理。...它们主要区别是 Callable call() 方法可以返回值和抛出异常,而 Runnable run() 方法没有这些功能。

    55700

    Java中小知识——lambda表达式

    匿名内部类引入Lambda表达式 在线程池那篇博客中,我们通过使用匿名内部类来作为参数传入submit方法中。 ?...Lambda表达式 思想 "说重点" lambda表达式核心即在于说重点 以线程代码为例,他需要是什么?最核心东西是什么? 就是run方法!!!...runnable接口中重写实现就一个run方法!!!接口只是run方法载体,装黄桃罐头盒子!!!核心只要run方法。 我们为什么要写runnable接口实现类?...就是为了重写run方法,并且让线程执行run方法。 所以,现在我们不要盒子了,直接用手抓着吃!!!...这个方法需要参数是Runnable接口实现类对象 2. Runnable接口目标是为了提供一个run 方法, What will be run 3. What will be run???

    99020

    Java高级编程:闭包

    _length); //线程启动 ic.run(); } } 2.2 局部内部类 在Java中,被定义在类方法体中类称之为局部内部类,局部内部类在外围方法中不可见...md.runThread().run(); } } 2.3 匿名内部类 在Java中,方法返回一个被直接实例化对象则称为匿名内部类。...匿名内部类没有类名,但是拥有更加简介代码块、并且同样需要重写接口类中方法匿名内部类同样属于内部类一种。...void main(String[] args) { //匿名调用方法执行线程 new OuterClass().runThread().run(); } }...在Java中,我们都知道方法参数传递是引用传递而非值传递,用一个简单例子来说明:我们将方法 People.get("老王") 得到 People 对象传递方法 managePeople(People

    78130

    面试官:说说Lambda表达式底层原理?

    1.Lambda表达式 使用 Lambda 表达式之前,我们创建一个线程,可以这样写: Thread t1 = new Thread(new Runnable() { @Override...public void run() { System.out.println("t1"); } }); t1.start(); 其中 Runnable 匿名内部类,查看 Runnable...2.使用Lambda表达式 使用 Lambda 表达式之前,我们创建一个线程是这样写: Thread t1 = new Thread(new Runnable() { @Override...类中会生成一个静态方法,静态方法代码就是 Lambda 表达式中代码。 匿名内部类重写抽象方法,会调用上一步静态方法,从而实现 Lambda 代码执行。...所以,综合来说,Lambda 表达式其实是匿名内部类语法糖,这个语法糖在程序执行时会进行兑现,也就是生成匿名内部类并进行任务执行

    7410

    Java基础之——Lambda表达式

    2.2、代码分析 对于 Runnable 匿名内部类用法,可以分析出几点内容: Thread 类需要 Runnable 接口作为参数,其中抽象 run 方法是用来指定线程任务内容核心; 为了指定...run 方法体,不得不需要 Runnable 接口实现类; 为了省去定义一个 RunnableImpl 实现类麻烦,不得不使用匿名内部类; 必须覆盖重写抽象 run 方法,所以方法名称、方法参数、...我们真正希望做事情是:将 run 方法体内代码传递给 Thread 类知晓。 传递一段代码——这才是我们真正目的。而创建对象只是受限于面向对象语法而不得不采取一种手段方式。...而为了指定线程执行内容,需要调用 Thread 类构造方法: public Thread(Runnable target) 为了获取 Runnable 接口实现对象,可以为该接口定义一个实现类 RunnableImpl...前面的一对小括号即 run 方法参数(无),代表不需要任何条件; 中间一个箭头代表将前面的参数传递给后面的代码; 后面的输出语句即业务逻辑代码。

    34260

    急速上手之Lambda表达式

    比如:我们真的希望创建一个匿名内部类对象吗?不。我们只是为了做这件事情而不得不创建一个对象。我们真正希望做事情是:将run方法体内代码传递给Thread类知晓。 ​...问题分析 ​ 对于Runnable匿名内部类用法,可以分析出几点内容: Thread类需要Runnable接口作为参数,其中抽象run方法是用来指定线程任务内容核心; 为了指定run方法体,...不得不需要Runnable接口实现类; 为了省去定义一个RunnableImpl实现类麻烦,不得不使用匿名内部类; 必须覆盖重写抽象run方法,所以方法名称、方法参数、方法返回值不得不再写一遍,且不能写错...代码块(方法体):该方案具体执行步骤。 () -> System.out.println("多线程任务执行!")...前面的一对小括号即run方法参数(无),代表不需要任何条件; 中间一个箭头代表将前面的参数传递给后面的代码; 后面的输出语句即业务逻辑代码。

    32720

    详解Lambda表达式

    我们真正希望做事情是:将 run 方法体内代码传递给 Thread 类知晓。 传递一段代码——这才是我们真正目的。而创建对象只是受限于面向对象语法而不得不采取一种手段方式。...代码分析: 对于 Runnable 匿名内部类用法,可以分析出几点内容: Thread 类需要 Runnable 接口作为参数,其中抽象 run 方法是用来指定线程任务内容核心; 为了指定 run...方法体,不得不需要 Runnable 接口实现类; 为了省去定义一个 RunnableImpl 实现类麻烦,不得不使用匿名内部类; 必须覆盖重写抽象 run 方法,所以方法名称、方法参数、方法返回值不得不再写一遍...代码块(方法体):该方案具体执行步骤。 同样语义体现在 Lambda 语法中,要更加简单: 1() -> System.out.println("多线程任务执行!")...前面的一对小括号即 run 方法参数(无),代表不需要任何条件; 中间一个箭头代表将前面的参数传递给后面的代码; 后面的输出语句即业务逻辑代码。

    46610

    Java8中Lambda函数式编程详解

    task = new Runnable() { @Override public void run() { // 覆盖重写抽象方法 System.out.println("多线程任务执行...代码分析 对于Runnable匿名内部类用法,可以分析出几点内容: Thread类需要Runnable接口作为参数,其中抽象run方法是用来指定线程任务内容核心; 为了指定run方法体,不得不需要...编程思想转换 做什么,而不是怎么做 我们真的希望创建一个匿名内部类对象吗?不。我们只是为了做这件事情而不得不创建一个对象。我们真正希望做事情是:将run方法体内代码传递给Thread类知晓。...run() { System.out.println("多线程任务执行!")...语义分析 仔细分析该代码中语义,Runnable接口只有一个run方法定义: public abstract void run(); 即制定了一种做事情方案(其实就是一个函数): 无参数:不需要任何条件即可执行该方案

    44020

    如何给run方法传参?如何处理线程返回值?

    run()方法传参实现方式主要有三种 构造函数传参 成员变量传参 回调函数传参 如何实现处理线程返回值 主线程等待法 优点:实现简单 缺点需要自己实现循环逻辑,循环时间自己无法精准控制 使用...Thread类join()阻塞当前线程以等待子线程处理完毕 通过Callable接口实现:通过FutureTask Or 线程池获取 通过FutureTask方法实现机制或者说基础 1.FutureTask...有个构造函数可以直接传Callable接口 2.FutureTask isDone()方法可以用来判断Callable接口实例call是否执行完毕 3.FutureTask 有个方法是get(...),若call()没执行完毕会阻塞住,如果执行完会返回Callable实例返回值 线程池获取 原理和FurureTask差不多,通过线程池submit一个Callable实例会返回一个Future...Future也具有FutureTask相同方法和功能 使用线程好处:``可以提交多个实现callable类,让线程池并发处理, 方便管理 主线程等待法 join改造上面的主线程只需要替换那个

    2.7K30

    Java-多线程:Callable接口和Runnable接口之间区别

    : 如上面代码所示,callable核心是call方法,允许返回值,runnable核心是run方法,没有返回值 call方法可以抛出异常,但是run方法不行 因为runnable是java1.1就有了...而thread类只支持runnable 它们相同点: 两者都是接口 两者都需要调用Thread.start启动线程 二、从使用场景来分析两接口间区别: 2.1 Runnnable接口使用场景 1)传递线程对象执行任务...; 2)作为线程方法execute()入口参数来执行任务; 具体实现又可以细分,具体如下面代码块所示: /** * @author Fisherman */ public class TheWayOfUsingRunnable...(); new Thread(runnableTask).start(); //4)Runnable类以及其子类作为线程任务提交给线程池,通过线程池维护工作者线程执行...,main线程会一直等到执行完call()方法所有代码才会继续执行main线程中接下来代码(等待发生在方法:future.get())。

    7.4K20

    JDK1.9-Lambda表达式

    task = new Runnable() { @Override public void run() { // 覆盖重写抽象方法 System.out.println("多线程任务执行...代码分析 对于Runnable匿名内部类用法,可以分析出几点内容: Thread类需要Runnable接口作为参数,其中抽象run方法是用来指定线程任务内容核心; 为了指定run方法体,不得不需要...Runnable接口实现类; 为了省去定义一个RunnableImpl实现类麻烦,不得不使用匿名内部类; 必须覆盖重写抽象run方法,所以方法名称、方法参数、方法返回值不得不再写一遍,且不能写错;...我们真正希望做事情是:将run方法体内代码传递给Thread类知晓。 传递一段代码——这才是我们真正目的。而创建对象只是受限于面向对象语法而不得不采取一种手段方式。那,有没有更加简单办法?...语义分析 仔细分析该代码中语义,Runnable接口只有一个run方法定义: public abstract void run(); 即制定了一种做事情方案(其实就是一个函数): 无参数:不需要任何条件即可执行该方案

    50020

    Android异步通信:手把手教你使用Handler消息传递机制(含实例讲解)

    Handler 机制简介 定义 一套 Android 消息传递机制 / 异步通信机制 作用 在多线程应用场景中,将工作线程中需更新UI操作信息 传递到 UI主线程,从而实现 工作线程对UI更新处理...,最终实现异步消息处理 为什么要用 Handler消息传递机制 答:多个线程并发更新UI同时 保证线程安全。...具体描述如下 总结 使用Handler原因:将工作线程需操作UI消息 传递 到主线程,使得主线程可根据工作线程需求 更新UI,从而避免线程操作不安全问题 2....实例讲解 本文将用实例逐个讲解 Handler用法 注: 由于Handler作用 = 将工作线程需操作UI消息 传递 到主线程,使得主线程可根据工作线程需求 更新UI,从而避免线程操作不安全问题...void run() { // 指定操作UI内容 mTextView.setText("执行线程1UI

    3.8K40
    领券