首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏weixuqin 的专栏

    Thread 和 Runnable

    Thread 类为底层操作系统的线程体系架构提供一套统一接口 Runnable 接口为关联 Thread 对象的线程提供执行代码 ---- 2. 创建 Thread 和 Runnable 对象 2.1 创建 Runnable 对象 创建 Runnable 有两种方式: 创建一个实现了 Runnable 接口的匿名类 Runnable r = new ticket = 5 ticket = 4 ticket = 3 ticket = 2 ticket = 1 ticket = 5 ticket = 4 ticket = 3 ticket = 2 ticket = 1 ticket = 5 ticket = 4 ticket = 3 ticket = 2 而第二种方式中,由于 3 个 Thread 对象共同执行一个 Runnable 对象中的代码,所以实现了资源共享 ticket = 5 ticket = 4 ticket = 3 ticket = 2 ticket = 1 总结: 继承 Thread 类的方法生成的线程每一个都是独立的,资源不能共享 实现 Runnable

    1.2K20发布于 2019-08-29
  • 来自专栏wym

    线程 Runnable接口

    于是就有了Runnable接口,他只有一个run方法,使用与线程一样 下面是一个窗体载入图片,图片不停动的例子,笑脸会从左到右运动 ? import javax.swing.JLabel; import javax.swing.SwingConstants; public class T extends JFrame implements Runnable

    87940发布于 2019-03-20
  • 来自专栏Lixj's Blog

    Runnable和Thread比较

    记录一下 因为Thread本来就是实现了Runnable,包含Runnable的功能是很正常的啊!! 至于两者的真正区别最主要的就是一个是继承,一个是实现; 其他还有一些面向对象的思想,Runnable就相当于一个作业,而Thread才是真正的处理线程,我们需要的只是定义这个作业,然后将作业交给线程去处理 综合来看,用Runnable比Thread好的多。 我们只需要把实现了Runnable的类的对象实例放入线程池,那么线程池就自动维护线程的启动、运行、销毁。我们不需要自行调用start()方法来开启这个线程。 Copyright: 采用 知识共享署名4.0 国际许可协议进行许可 Links: https://lixj.fun/archives/2020-04-30-11-43-34

    66120编辑于 2022-06-10
  • 来自专栏kwai

    thread,runnable,callable,future

    runnable 线程接口 需要实现run接口 没有返回值(void run) 没有抛出异常 callable 有返回值 有抛出异常 thread 类,实现了runnable接口 future 接口,实现类

    52062编辑于 2022-04-07
  • 来自专栏yaphetsfang

    Runnable和Thread比较

    Auto-generated method stub MyThread2 m=new MyThread2(); new Thread(m).start() = 4 Runnable ticket = 3 Runnable ticket = 2 Runnable ticket = 1 Runnable ticket = 0 这样的结果才合理 ).start(); } } 输出结果: 线程1卖票—->10 线程1卖票—->9 线程1卖票—->8 线程2卖票—->7 线程2卖票—->6 线程1卖票—->5 线程1卖票—->4 线程2卖票—->3 线程2卖票—->2 线程1卖票—->1 (这里必须使用synchronized,否则会出现重复卖某一张票的情况,当然这点和本篇文章无关,这里不做详述。) 2、没有可比性,Thread实现了Runnable接口并进行了扩展,我们通常拿来进行比较只是写法上的比较,而Thread和Runnable的实质是实现的关系,不是同类东西。

    69220发布于 2020-07-30
  • 来自专栏全栈程序员必看

    Runnable和Callable区别

    Runnable Runnable是一个接口,该接口中只有一个run方法,实现Runnable接口的类需要重写run方法,然后可以把这个类作为Thread类的一个参数,来创建线程,具体的用法有两种: 创建一个类 ,实现Runnable接口,重写run方法 class MyThread implements Runnable { @Override public void run() { ); } } 使用匿名内部类创建一个对象 class Test{ public static void main(String[] args) { Runnable myThread = new Runnable() { @Override public void run() { 不调用get方法就不会阻塞,也就说Callable如果不调用get方法,效果就和Runnable差不多。

    1.2K20编辑于 2022-07-23
  • 来自专栏老欧说安卓

    Kotlin入门(29)任务Runnable

    运行一个任务也有多种形式,既可在UI线程中调用处理器对象的post或者postDelayed方法,也能另外开启分线程来执行Runnable对象。 Kotlin代码声明Runnable对象有四种方式,分别对应不同的业务场景,接下来就依次阐述Runnable对象的四种声明方式: 第一种:内部类 内部类方式是最循规蹈矩的,在代码里先书写一个继承自Runnable 因此,本节的任务对象也可使用类似的写法,只要说明该对象是Runnable类型,则多余的run方法就能如愿去除。 ,因为post方法只能输入Runnable类型的参数,所以括号内部的Runnable纯属多余;另外,post方法有且仅有一个输入参数,于是圆括号嵌套大括号稍显繁琐。 把这两个冗余之处分别删除与合并,得到了匿名实例版的Kotlin代码:     //第2点:如果该任务只需执行一次,则可采用匿名实例的方式,直接嵌入任务的执行代码     handler.post {        

    2.2K20发布于 2019-01-18
  • 来自专栏linux驱动个人学习

    蓝牙协议分析(2)_协议架构

    前言 本文是蓝牙协议分析的第二篇文章,在“蓝牙协议分析(1)_基本概念”的基础上,从整体架构的角度,了解蓝牙协议的组成,以便加深对蓝牙的理解。 2. 蓝牙协议分为四个层次:物理层(Physical Layer)、逻辑层(Logical Layer)、L2CAP Layer和应用层(APP Layer)。 L2CAP层,L2CAP是逻辑链路控制和适配协议(Logical Link Control and Adaptation Protocol)的缩写,负责管理逻辑层提供的逻辑链路。 基于该协议,不同Application可共享同一个逻辑链路。类似TCP/IP中端口(port)的概念。 APP层,理解蓝牙协议中的应用层,基于L2CAP提供的channel,实现各种各样的应用功能。 2.3 L2CAP Channels L2CAP是Logical Link Control and Adaptation Protocol(逻辑链路控制和适配协议)的缩写,蓝牙协议到这个层次的时候,就清爽多了

    3.7K12发布于 2021-10-18
  • 来自专栏Reck Zhang

    Java 03 - Thread与Runnable

    Thread与Runnable 在Java创建一个线程的时候, 通常是有两种方法, 一种是重写run()方法, 调用对象实例的start()方法; 一种是实现Runnable接口, 重写run()方法, older syntax: // pre java 8 lambdas Thread t = new Thread(new Runnable() { public void run() { // your code here ... } }); t.start(); lambda: Runnable runnable = () -> { // your code here ... }; Thread t = new Thread(runnable); t.start(); 对比 实现Runnable接口相较于继承Thread的优势: 适合多个相同的程序代码的线程去处理一个资源 , 在实现Runnable接口的实例中, 各个线程共享该实例的数据域, 但是可能需要进行同步约束.

    37720发布于 2021-08-11
  • 来自专栏捉虫大师

    聊聊dubbo协议2

    在《聊聊dubbo协议》中介绍了attachments在consumer和provider间的传递情况,有个疑问没有给出答案。 dubbo协议如何处理协议的兼容的? 从RmiProtocol类中能看到dubbo针对2.7.0、2.6.3两个边界进行了版本兼容 ? 版本信息从哪里来呢? [2.5.3, 2.6.3)版本中,dubbo版本与dubbo协议没有分开,都是用url上的dubbo参数,值是对应的版本号,取值范围是 >=2.0.0 && <=2.6.2 [2.6.3, 2.7.0 )版本,无法从provider注册的url上看出dubbo版本,dubbo协议版本是从url的dubbo参数获取,固定为2.0.2 2.7.0之后的版本,dubbo版本在provider的url release 参数上,dubbo协议版本在dubbo参数上,目前还是2.0.2 最后 通过这次分析知道了2.7.x的dubbo为什么provider不能带回隐式参数了,这应该是dubbo 2.7.x的一个bug。

    83321发布于 2021-03-03
  • 来自专栏猫头虎博客专区

    什么是A2A协议?什么是MCP协议?A2A和MCP协议哪个更好?

    什么是A2A协议?什么是MCP协议?A2A和MCP协议哪个更好? 通过阅读本文,您将能够清晰地了解A2A协议和MCP协议的区别,以及它们如何支持智能体协作、语言模型与外部系统的交互,以及在实际开发中如何选择更适合的协议来优化您的AI解决方案。 什么是A2A协议? A2A协议的技术原理 通信架构:A2A协议通常基于常见的Web标准技术,如HTTP和JSON-RPC,使智能体能够通过Web服务进行交互。 A2A协议的应用场景 A2A协议特别适用于需要多个智能体协同工作的场景,例如在智能制造、金融分析、客服机器人等行业中。通过A2A协议,多个智能体可以协调工作,共享信息并共同完成复杂任务。 A2A协议与MCP协议哪个更好? 选择哪个协议更好,取决于实际应用需求。

    2.5K10编辑于 2025-04-12
  • 来自专栏AI智能体从入门到实践

    构建AI智能体:LangChain LCEL深度解析:基于Runnable协议的声明式编程新范式

    LCEL 通过基于 Runnable 协议的管道操作符 |,提供了更简单、更强大、更灵活的方式来构建复杂的工作流。 Runnable 协议: 这是 LCEL 能够工作的基础。任何实现了 Runnable 接口的对象都可以用 | 连接。LangChain 的大部分核心组件都实现了这个接口。 四、LCEL的核心:Runnable协议1. 基础概念 任何实现了Runnable协议的对象都可以成为LCEL链的一部分。 2. LLM 作为 Runnable LLM 也可以是一个 Runnable。 () # 2.

    65621编辑于 2025-11-25
  • 来自专栏c++与qt学习

    Oauth2协议

    Oauth2简介 第三方认证技术方案最主要是解决认证协议的通用标准问题,因为要实现跨系统认证,各系统之间要遵循一定的接口协议。 OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。 Oauth协议目前发展到2.0版本,1.0版本过于复杂,2.0版本已得到广泛应用。 参考:https://baike.baidu.com/item/oAuth/7153134? fr=aladdin Oauth 协议:https://tools.ietf.org/html/rfc6749 下边分析一个Oauth2认证的例子,网站使用微信认证的过程: 1.用户进入网站的登录页面 ,造成各种实现的兼容性和互操作性差 ​ 不是一个认证协议,本身并不能告诉你任何用户信息。 Oauth2RestTemplate会报错,这个报错信息会被Oauth2ClientContextFilter捕获并重定向到认证服务器 认证服务器通过Authorization Endpoint进行授权

    1.8K10编辑于 2021-12-07
  • 来自专栏全栈程序员必看

    Runnable接口详细详解「建议收藏」

    创建线程对象,默认有一个线程名,以Thread-开头,从0开始计数 构造函数Thread() Thread-0 Thread-1 Thread-2 其他构造方法 Thread(Runnable target ) 如果在构造thread的时候没有传递Runnable或者没有复写Thread的run方法,该thread将不会 调用任何的东西,如果传递了Runnable接口的实例,后者复写了Thread的run方法 ,则会执行该 方法的逻辑单元(逻辑代码) public class CreateThread2 { public static void main(String[] args) { Thread Thread会默认获取父线程的ThreadGroup作为该 该线程的ThreadGroup,此时子线程和父线程将会在同一个threadGroup中. public class CreateThread2 < Integer.MAX_VALUE; i++) { counter++; new Thread(() -> { byte[] data = new byte[1024 * 1024 * 2]

    65140编辑于 2022-11-17
  • 来自专栏全栈程序员必看

    runnable 和 callable区别「建议收藏」

    runnable 和 callable 有什么区别? 相同点: 1、两者都是接口;(废话) 2、两者都可用来编写多线程程序; 3、两者都需要调用Thread.start()启动线程; 不同点: 1、两者最大的不同点是:Runnable 接口 run 2Runnable 接口 run 方法只能抛出运行时异常,且无法捕获处理;Callable 接口 call 方法允许抛出异常,可以获取异常信息。

    46610编辑于 2022-07-25
  • 来自专栏全栈程序员必看

    比特币p2p协议_协议栈p2p

    每个节点都参与验证并传播交易及区块信息,发现并维持与对等节点的连接 比特币主网络:大约5000-8000个运行着不同版本比特币核心客户端(Bitcoin Core)的监听节点 + 以及几百个运行着各类比特币P2P 协议的应用,一小部分节点也是挖矿节点,大型公司运行 着基于Bitcoin核心客户端的全节点客户端(它们具有区块链的完整拷贝及网络节点,但不具备挖矿及钱包功能),这些节点是网络中的边缘路由器(edgerouters 比特币P2P主网络上连接着许多矿池服务器以及协议网关,它们把运行其他协议的节点连接起来。这些节点通常都是矿池挖矿节点(参见挖矿章节)以及轻量级钱包客户端,它们通常不具备区块链的完整备份。 新的网络节点必须发现至少一个网络中存在的节点并建立连接 由于比特币网络的拓扑结构并不基于节点间的地理位置,因此各个节点之间的地理信息完全无关 节点通常采用TCP协议

    1.5K10编辑于 2022-09-27
  • 来自专栏HaC的技术专栏

    (八)Callable和Runnable的区别

    Callable和Runnable都是一个接口。 Runnable @FunctionalInterface public interface Runnable { /** * When an object implementing run方法,在使用普通线程的时候,我们可以实现Runnable接口即可,Thread类在调用start()函数后就是执行的是Runnable的run()函数。 也就是说Future提供了三种功能: 1)判断任务是否完成; 2)能够中断任务; 3)能够获取任务执行结果。 demo: public class ThreadPoolALL2 { public static void main(String[] args) { new ThreadPoolALL2

    62110发布于 2020-12-30
  • 来自专栏后台技术底层理解

    Java 多线程 Thread 和 Runnable

    Crash 阻塞结束,完成休眠,唤醒,拿到锁资源进入runnable 线程Terminated 线程正常结束生命周期 线程意外结束 Jvm Crash 线程结束 2.run()和start() /running状态. thread.start() TimeUnit.SECONDS.sleep(2) thread.start() Thread中的run方法就是空的实现,run和start采用模板的设计方法 Thread run 和 Runnable run 区别 首先,实现线程的执行单元有两种方式, 重写 Thread 的 run 方法 实现Runnable接口的 run 并将 Runnable 实例用作构造 Thread的参数 无论Runnable和Thread都是实现Runnable的接口 实质:Thread 类中调用 Runnable 实现的重写run接口 Thread 的 run 方法是不能共享的, 设置守护线程 setDaemon 方法, true 代表守护线程 父线程是守护线程,子线程是守护,反之亦然 守护线程必须在启动前设置才有效 2.

    76010发布于 2020-08-04
  • 来自专栏Java编程

    Java多线程Thread VS Runnable详解

    线程创建的两种方法 JAVA中创建线程可以通过继承Thread类和实现Runnable接口来创建一个线程。Runnable方式可以避免Thread 方式由于JAVA单继承特性带来的缺陷。 MyThread implements Runnable{ .... .start(); mt2.start(); mt3.start(); } } Runnable方式 class MyThread2 implements Runnable th2=new Thread(mt,"窗口2"); Thread th3=new Thread(mt,"窗口3"); //启动三个线程,也即是三个窗口,开始卖票 总结 建议使用Runnable这种方式创建线程。 程序中的同一资源指的是同一个Runnable对象。安全的卖票程序中需要加入同步synchronized。

    1.3K00发布于 2017-12-15
  • 来自专栏程序那些事

    java中Runnable和Callable的区别

    java中Runnable和Callable的区别 在java的多线程开发中Runnable一直以来都是多线程的核心,而Callable是java1.5添加进来的一个增强版本。 本文我们会详细探讨Runnable和Callable的区别。 运行机制 首先看下Runnable和Callable的接口定义: @FunctionalInterface public interface Runnable { /** * When 我们都知道要自定义一个Thread有两种方法,一是继承Thread,而是实现Runnable接口,这是因为Thread本身就是一个Runnable的实现: class Thread implements 所以Runnable可以通过Runnable和之前我们介绍的ExecutorService 来执行,而Callable则只能通过ExecutorService 来执行。

    95040发布于 2020-07-08
领券