我习惯用类似 JavaScript或类似Erlang的语言编写代码,在那里我可以轻松地创建回调函数.现在我必须用Java写一些东西.我想出了如何执行这样的回调:

import java.util.*;

class Demo extends Thread{

private int data;

public void run(){

ask_for_data(new Runnable(){

public void run(){

on_data();

}

});

}

public void on_data(){

System.out.println("Async callback: " + data);

}

public void ask_for_data(final Runnable callback){

System.out.println("2");

Runnable r = new Runnable(){

public void run(){

data = get_data();

new Thread(callback).start();

}

};

new Thread(r).start();

}

public int get_data(){

try{

Thread.sleep(1000);

} catch (Exception e) {};

return 42;

}

public static void main(String[] args) {

Demo d = new Demo();

d.start();

}

}

问题是:这是正确的方法吗?

java runnable 使用_使用Runnable在Java中实现回调相关推荐

  1. java线程堆栈_深入JVM剖析Java的线程堆栈

    在这篇文章里我将教会你如何分析JVM的线程堆栈以及如何从堆栈信息中找出问题的根因.在我看来线程堆栈分析技术是Java EE产品支持工程师所必须掌握的一门技术.在线程堆栈中存储的信息,通常远超出你的想象 ...

  2. java 下载加速_一种基于Java的大文件下载加速方法与流程

    本发明涉及java/多线程技术领域,涉及一种加速文件下载装置,具体提供一种基于java的大文件下载加速方法. 背景技术: 现有的常用下载方式是基于浏览器的单线程下载.这种单线程下载的方式,是通过htt ...

  3. java python算法_用Python,Java和C ++示例解释的排序算法

    java python算法 什么是排序算法? (What is a Sorting Algorithm?) Sorting algorithms are a set of instructions t ...

  4. java 判断类型_如何快速入门Java编程学习(干货)

    一.初识Java 1.生活中的程序: 从起床到教室上课的过程 穿衣打扮>起床>洗漱>出宿舍>>吃早餐>到教室 按照特定的顺序去完成某一件事的过程我们叫做生活中的程序 ...

  5. 支持java虚拟主机_为何缺乏支持Java的虚拟主机

    现在很多站长们,都青睐于香港虚拟主机建站.现在常见的是asp和PHP的程序空间很多,但是Java的少之又少,下面小编我给大家聊一聊! 一.香港Java虚拟主机成本高 使用Java程序建站,就必须要用支 ...

  6. 做Java头发少_这35个Java代码优化细节,你用了吗

    链接:https://www.jianshu.com/p/6e472304b5ac 前言 代码 优化 ,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有 ...

  7. java 建立网站_建立基本的Java Web站点

    1.创建站点及虚拟目录.在Eclipse中创建新的Dynamic Web Project(这里命名为WebTest).在文件WebContent目录下新建index.html ,然后在Tomcat中创 ...

  8. 我的世java途径错误_我的世界JAVA路径错误的解决方法分享

    我的世界JAVA路径错误该怎么解决呢?JAVA是Minecraft运行的虚拟环境必要条件,需要您安装后才开始游戏.很多童鞋在安装过程中都遇到了JAVA路径错误的提示,这是什么原因导致的?第一手游网必须 ...

  9. java编程赋值运算符_跟我学java编程—简单赋值运算符“=”

    赋值运算符是双目运算符,用在赋值表达式中.赋值运算符将值存储在运算符左边操作数指定的变量中.有两种赋值操作,简单赋值和复合赋值,简单赋值把运算符右边的操作数的值存储在运算符左边操作数指定的变量中:复合 ...

  10. java文件名特殊字符_如果拒绝打开文件名中带有特殊字符的文件,如何修复Java?...

    如何打开Java拒绝打开的带有特殊字符的文件? 在一开始,我想这是字符集编码问题,因为我从日志文件中读取了错误的文件名.但是后来我发现,这可能是JVM的错误,我需要一种解决方法. 真实的例子胜于言语 ...

最新文章

  1. jenkins如何实现重新发布历史构建记录里的版本
  2. PyTorch模块类
  3. Bubble Sort Aizu - ALDS1_2_A
  4. 工业级POE交换机技术优势及供电方法详解!
  5. MySQL学习笔记1(增删查改)
  6. python选择排序 时间复杂度
  7. 区块链技术的发展现状_区块链的现状及其发展趋势
  8. Eclipse配置svn
  9. FreeNAS 是什么
  10. ssis中数据类型_SSIS中的数据挖掘查询
  11. 2018年苏大计算机考研872真题及解析
  12. 看图识物_‎App Store 上的“认识动物-看图识物大全、学英语”
  13. 说说我对[lambda x: x*i for i in range(4)]的理解
  14. 题目1035:找出直系亲属 树
  15. mysql热备工具_MySQL热备工具Xtrabackup
  16. java计算器自述文件_自述文件 - Unreal Engine
  17. 服务器系统 固态硬盘速度慢,SSD速度慢的原因和解决办法 电脑装了固态硬盘还慢怎么办...
  18. 外贸询盘、对话、常用话术英语(上)
  19. 【Python自然语言处理】文本向量化的六种常见模型讲解(独热编码、词袋模型、词频-逆文档频率模型、N元模型、单词-向量模型、文档-向量模型)
  20. 更改文字颜色为红色HTMl语言,红色字体CSS_设置html字体颜色为红色

热门文章

  1. python sys模块 argv用法_python命令行的参数传递(sys.argv)
  2. 拒绝疫苗之殇 利君制药用大数据生产“放心药”
  3. 微信小程序学习笔记-自定义组件
  4. 数字化基础建设水平和数字化市场环境相似,是长三角数字转型的优势
  5. 微信5.0绑定银行卡教程
  6. Linux Make命令
  7. python迷宫小游戏代码_用 Python 写个消消乐小游戏
  8. 【TikZ 简单学习(下):基础绘制】Latex下的绘图宏包
  9. PowerUp攻击模块讲解
  10. 为什么总感觉团队工作效率不高?如何提高工作效率?