前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java 实现多线程的三种方式

Java 实现多线程的三种方式

作者头像
希希里之海
发布于 2019-08-30 03:55:20
发布于 2019-08-30 03:55:20
48900
代码可运行
举报
文章被收录于专栏:weixuqin 的专栏weixuqin 的专栏
运行总次数:0
代码可运行

继承 Thread 类

run() 方法 VS start() 方法:

  • run() 方法:普通的成员方法
  • start() 方法:负责启动一个新的线程,并调用 run() 方法
  • 因此启动线程,需要使用 start() 方法
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class MultiThread_Test {
    public static void main(String[] args) {
        MyThread mt = new MyThread();
        mt.start();
    }
}

class MyThread extends Thread {
    public void run() {
        System.out.println(Thread.currentThread().getName());
    }
}

实现 Runnable 接口

实际上 Thread 类也是实现了 Runnable 接口: class Thread implements Runnable {}

启动 Runnable 实例时,需要放在 Thread 中,然后调用 start() 方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class MultiThread_Test {
    public static void main(String[] args) {
        MyRunnable mr = new MyRunnable();
        new Thread(mr).start();
    }
}

class MyRunnable implements Runnable {
    public void run() {
        System.out.println(Thread.currentThread().getName());
    }
}

实现 Callable 接口

  • Java 5 开始提供
  • 可以返回结果(通过 Future),也可以抛出异常
  • 需要实现的是 call() 方法
  • 以上两点也是 Callable 接口 与 Runnable 接口的区别
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class MultiThread_Test {
    public static void main(String[] args) throws Exception {
        ExecutorService es = Executors.newSingleThreadExecutor();

        // 自动在一个新的线程上启动 MyCallable,执行 call 方法
        Future<Integer> f = es.submit(new MyCallable());

        // 当前 main 线程阻塞,直至 future 得到值
        System.out.println(f.get());

        es.shutdown();
    }
}

class MyCallable implements Callable<Integer> {
    public Integer call() {
        System.out.println(Thread.currentThread().getName());

        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        return 123;
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-08-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
【DeepMind 公开课-深度强化学习教程笔记04】不基于模型的预测
点击上方“专知”关注获取更多AI知识! 【导读】Google DeepMind在Nature上发表最新论文,介绍了迄今最强最新的版本AlphaGo Zero,不使用人类先验知识,使用纯强化学习,将价值网络和策略网络整合为一个架构,3天训练后就以100比0击败了上一版本的AlphaGo。Alpha Zero的背后核心技术是深度强化学习,为此,专知有幸邀请到叶强博士根据DeepMind AlphaGo的研究人员David Silver《深度强化学习》视频公开课进行创作的中文学习笔记,在专知发布推荐给大家!(关注
WZEARW
2018/04/10
1.1K0
【DeepMind 公开课-深度强化学习教程笔记04】不基于模型的预测
强化学习笔记4:无模型预测 model-free prediction
对于Env来说,不是参数已知的MDP 比如元组中a、s、P的关系不确定 or 未知
列夫托尔斯昊
2020/08/25
5630
强化学习总结
强化学习总结 强化学习的故事 强化学习是学习一个最优策略(policy),可以让本体(agent)在特定环境(environment)中,根据当前的状态(state),做出行动(action),从而获得最大回报(G or return)。 有限马尔卡夫决策过程 马尔卡夫决策过程理论定义了一个数学模型,可用于随机动态系统的最优决策过程。 强化学习利用这个数学模型将一个现实中的问题变成一个数学问题。 强化学习的故事1:找到最优价值 强化学习就是:追求最大回报G 追求最大回报G就是:找到最优的策略\(\p
绿巨人
2018/05/17
1.6K0
强化学习-4:无模型预测 model-free prediction
对于Env来说,属于MP,但是不是参数已知的MDP 比如元组中a、s、P的关系不确定 or 未知 Prediction -> Control Evaluation -> Optimization
列夫托尔斯昊
2020/08/25
5980
强化学习-4:无模型预测 model-free prediction
强化学习读后感
此学习笔记基础来源于zhoubolei RL(https://github.com/zhoubolei/introRL),以基本概念,基本定理,问题建模,代码实现,新论文的阅读为逻辑展开写的。学习强化学习的过程,会相对漫长。比如:一个假想的学习过程,可能会包含sutton的 complete draft;一些RL基础课程,David Silver,伯克利RL或周博磊等;经典算法的复现;核心研究部门的学术文章(openAI,DeepMind,...);靠谱博士写的博文;会遇见公式符号,上下标,算法实现细节,问题优化,具体问题建模等问题。这里,只是个开始,代码框架可参考PARL。不太懂wx格式,建议wx对latex支持更友好,不要搞什么其他幺蛾子语法。
BBuf
2021/10/08
7960
强化学习(三)算法概述
前面的文章我们已经介绍过强化学习的强化学习(一)入门介绍和强化学习(二)重要概念,这篇文章介绍强化学习的算法概述。
Minerva
2020/10/29
5540
强化学习(三)算法概述
AI helps AI -- 强化学习从入门到入门
推荐文章:《使用Python实现深度学习模型:智能食品配送优化》,作者:【Echo_Wish】。
languageX
2024/11/17
5960
AI helps AI -- 强化学习从入门到入门
强化学习之蒙特卡洛方法介绍
在强化学习问题中,我们可以用马尔可夫决策过程(MDP)和相关算法找出最优行动值函数 q∗(s,a)和v∗(s),它通过策略迭代和值迭代找出最佳策略。
崔庆才
2019/09/04
1.7K0
强化学习之蒙特卡洛方法介绍
强化学习入门
强化学习(Reinforcement Learning, RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一,用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题。
用户2794661
2022/05/30
1.2K0
如何使用强化学习玩21点?
本文将比较分析Monte-Carlo控制算法与时域差分控制算法在解21点(Blackjack)博弈中的应用。
用户7623498
2020/08/04
1.6K0
深度强化学习专栏(三)
【磐创AI导读】:本篇文章是深度强化学习专栏的第三篇,讲了第四节无模型的强化学习方法,希望对大家有所帮助。查看上篇关于本专栏的介绍:深度强化学习(DRL)专栏开篇。
磐创AI
2019/09/17
7670
深度强化学习专栏(三)
《深度强化学习》面试题汇总
4. 强化学习的损失函数(loss function)是什么?和深度学习的损失函数有何关系?
深度强化学习实验室
2019/11/21
5.1K0
《深度强化学习》面试题汇总
强化学习详解:理论基础与基础算法解析
强化学习(Reinforcement Learning, RL)是机器学习中的一个重要分支,其目标是通过与环境的交互来学习决策策略,以最大化长期累积奖励。在强化学习中,智能体(agent)通过执行一系列动作来影响环境,从而获得反馈信号,即奖励(reward)。这种学习机制模仿了生物体在自然界中的学习过程,因此具有很强的现实意义和应用前景。
TechLead
2024/07/04
6180
强化学习详解:理论基础与基础算法解析
强化学习基础篇【1】:基础知识点、马尔科夫决策过程、蒙特卡洛策略梯度定理、REINFORCE 算法
智能体(agent):智能体是强化学习算法的主体,它能够根据经验做出主观判断并执行动作,是整个智能系统的核心。
汀丶人工智能
2023/06/02
1.2K1
强化学习基础篇【1】:基础知识点、马尔科夫决策过程、蒙特卡洛策略梯度定理、REINFORCE 算法
【论文深度研读报告】MuZero算法过程详解
这篇文章的研究内容为:具有规划能力的智能体(agents with planning capabilities)。
深度强化学习实验室
2021/01/26
3.4K0
写给开发同学的 AI 强化学习入门指南
作者:bear 该篇文章是我学习过程的一些归纳总结,希望对大家有所帮助。 最近因为 AI 大火,搞的我也对 AI 突然也很感兴趣,于是开启了 AI 的学习之旅。其实我也没学过机器学习,对 AI 基本上一窍不通,但是好在身处在这个信息爆炸的时代,去网上随便一搜发现大把的学习资料。 像这个链接里面:https://github.com/ty4z2008/Qix/blob/master/dl.md 就有很多资料,但是这相当于大海捞针。在学习之前我们先明确自己的目的是什么,如题这篇文章是入门强化学习,那么就需要定义
腾讯技术工程官方号
2023/04/29
1.6K0
写给开发同学的 AI 强化学习入门指南
强化学习第1天:马尔可夫过程
我们知道强化学习是一个状态转移的过程,状态发生变化的原因可能取决于当前状态,也可能取决于先前的许多状态,我们把当前状态设为
Nowl
2024/01/18
3800
强化学习第1天:马尔可夫过程
Python 强化学习实用指南:1~5
强化学习(RL)是机器学习的一个分支,其中学习是通过与环境交互来进行的。 这是面向目标的学习,不教导学习器采取什么行动; 相反,学习器从其行动的结果中学习。 随着各种算法的迅速发展,它是人工智能(AI)中最活跃的研究领域之一。
ApacheCN_飞龙
2023/04/24
1.9K0
心得&复述知识体系:《强化学习》中的蒙特卡洛方法 Monte Carlo Methods in RL
笔者阅读的是中文书籍,提到的具体公式笔者将给出其所在的英文版本的页码,英文书籍原文见 Sutton 本人官网:http://incompleteideas.net/book/the-book.html。
Piper蛋窝
2020/11/19
1K0
心得&复述知识体系:《强化学习》中的蒙特卡洛方法 Monte Carlo Methods in RL
资源 | Richard Sutton经典教材《强化学习》第二版公布(附PDF下载)
选自incompleteideas 机器之心编译 参与:黄小天、刘晓坤 强化学习教父 Richard Sutton 的经典教材《Reinforcement Learning:An Introduction》第二版公布啦。本书分为三大部分,共十七章,机器之心对其简介和框架做了扼要介绍,并附上了全书目录、课程代码与资料。下载《强化学习》PDF 请点击文末「阅读原文」。 书籍百度网盘:https://pan.baidu.com/s/1miP38tM 原书籍地址:http://incompleteideas.net
机器之心
2018/05/10
9.1K1
推荐阅读
相关推荐
【DeepMind 公开课-深度强化学习教程笔记04】不基于模型的预测
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档