Runnable接口的 run() 方法和start()方法
1.start()方法来启动线程,真正实现了多线程运行。这时无需等待run方法体代码执行完毕,可以直接继续执行下面的代码;通过调用Thread类的start()方法来启动一个线程, 这时此线程是处于就绪状态, 并没有运行,等待分配到CPU后继续执行未完的run()方法。 这里方法run()称为线程体,它包含了要执行的这个线程的内容, Run方法运行结束, 此线程终止。然后CPU再调度其它线程。即分配到cpu时执行未完的run()函数。
2.run()方法当作普通方法的方式调用。程序还是要顺序执行,要等待run方法体执行完毕后,才可继续执行下面的代码; 程序中只有主线程——这一个线程, 其程序执行路径还是只有一条, 这样就没有达到写线程的目的。
@Test
public void RunnableTest() throws InterruptedException {
Runner1 runner1 = new Runner1();
Runner2 runner2 = new Runner2();
// Thread(Runnable target) 分配新的 Thread 对象。
Thread thread1 = new Thread(runner1);
Thread thread2 = new Thread(runner2);
// thread1.start();
// thread2.start();
thread1.run();
thread2.run();
System.out.print("阻塞当前线程,直到倒数计数器倒数到0");
new CountDownLatch(1).await();
} class Runner1 implements Runnable { // 实现了Runnable接口,jdk就知道这个类是一个线程
public void run() {
for (int i = 0; i < 10; i++) {
try {
TimeUnit.SECONDS.sleep(1);
System.out.println("进入Runner1运行状态——————————" + i);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
} class Runner2 implements Runnable { // 实现了Runnable接口,jdk就知道这个类是一个线程
public void run() {
for (int i = 0; i < 10; i++) {
try {
TimeUnit.SECONDS.sleep(2);
System.out.println("进入Runner2 运行状态——————————" + i);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
Lambda
new Thread(new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + "新建线程");
}
}
).start();
new Thread(() -> System.out.println(Thread.currentThread().getName() + "新建线程")).start();
Runnable接口的 run() 方法和start()方法的更多相关文章
- Collection接口和Map接口的 size 方法和 isEmpty方法
一.Collection接口的 size 方法和 isEmpty方法 int size(); 返回列表中元素的数目,如果这个列表包含超过Integer.MAX_VALUE,则返回Integer.MAX ...
- Thread 的run方法和start方法的区别
start()方法是用来启动线程,实现了多线程运行 点进去查看源码,发现start方法创建一个线程 并让线程处于就绪状态,并且在start方法内会调用start0()方法,而start0作为本地方法 ...
- Java Thread中,run方法和start方法的区别
两种方法的区别: 1.start方法 用 start方法来启动线程,是真正实现了多线程, 通过调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦 ...
- Thread中,run方法和start方法的区别
1. 通过调用Thread类中的start()方法可以启动一个线程,但是线程并不是立刻运行,而是处于就绪态,一旦获取cpu时间片,则会立即运行run()方法 2. start()方法实现了多线程运行, ...
- run方法和start方法的不同
run 方法只不过是对对象方法的简单调用,在主线程中的执行时间是固定的 而start方法是开启一个线程,起执行时间是不固定的.
- Mapper类/Reducer类中的setup方法和cleanup方法以及run方法的介绍
在hadoop的源码中,基类Mapper类和Reducer类中都是只包含四个方法:setup方法,cleanup方法,run方法,map方法.如下所示: 其方法的调用方式是在run方法中,如下所示: ...
- 线程中sleep()方法和wait()方法的前生今世
先看再点赞,给自己一点思考的时间,如果对自己有帮助,微信搜索[程序职场]关注这个执着的职场程序员.我有什么:职场规划指导,技能提升方法,讲不完的职场故事,个人成长经验. 不知道大家有没有这种感觉,在公 ...
- Object类中wait代餐方法和notifyAll方法和线程间通信
Object类中wait代餐方法和notifyAll方法 package com.yang.Test.ThreadStudy; import lombok.SneakyThrows; /** * 进入 ...
- wait方法和sleep方法的区别
一.概念.原理.区别 Java中的多线程是一种抢占式的机制而不是分时机制.线程主要有以下几种状态:可运行,运行,阻塞,死亡.抢占式机制指的是有多个线程处于可运行状态,但是只有一个线程在运行. ...
- 序列化和持久化 merge方法和saveOrUpdate方法
merge方法和saveOrUpdate方法的区别 merge方法是把我们提供的对象转变为托管状态的对象:而saveOrUpdate则是把我们提供的对象变成一个持久化对象:说的通俗一点就是:saveO ...
随机推荐
- CSS 溢出overflow属性的使用
作者:WangMin 格言:努力做好自己喜欢的每一件事 在CSS中,如果给一个盒子设置了固定的宽度与高度,但内容过多就会溢出盒子本身的宽度或高度.此时,就可以使用 overflow 属性来控制内容溢出 ...
- 标子查询优化和改写SQL案例
京华开发一哥们找我优化条报表SQL,反馈执行时间很慢需要 18s 才能出结果,安排. -- 原SQL SELECT 2 AS TYPE, to_char(a."create_time&quo ...
- css面试题随笔
之前在前端群有个汉纸聊到他面试别人时问到:margin塌陷和margin合并问题如何解决? 然后我自己也懵逼了哈哈,因为只是遇到过并不知道这叫塌陷.合并哈哈哈················那我们一起 ...
- 【Javaweb】Servlet九 | base标签的作用【详细介绍】 Web路径相关知识
base标签的作用 导言:路径跳转 <a href="/a/b/c.html">这是a下的b下的c</a></br> <a href=&q ...
- SpringMvc集成开源流量监控、限流、熔断降级、负载保护组件Sentinel
前言:作者查阅了Sentinel官网.51CTO.CSDN.码农家园.博客园等很多技术文章都没有很准确的springmvc集成Sentinel的示例,因此整理了本文,主要介绍SpringMvc集成Se ...
- Docker 安装教程
一.离线安装 一.CentOS 离线安装 一.下载地址 1.选择系统的型号,选择linux-CentOS 下载地址 2.上传文件到CentOS 服务器 #选择文件 rz 二.开始安装 1.解压压缩包 ...
- [ABC246D] 2-variable Function
Problem Statement Given an integer $N$, find the smallest integer $X$ that satisfies all of the cond ...
- [ABC246Ex] 01? Queries
Problem Statement You are given a string $S$ of length $N$ consisting of 0, 1, and ?. You are also g ...
- Rong晔大佬教程学习(0):前言
2023-12-13 在安装了tinyriscv的工具链之后,本想着说去看那个技术文档,但是那个技术文档只是相当于一个"使用手册",而不是技术教程,所以说还是得去补一补计组的知识. ...
- 【scikit-learn基础】--『预处理』之 正则化
数据的预处理是数据分析,或者机器学习训练前的重要步骤.通过数据预处理,可以 提高数据质量,处理数据的缺失值.异常值和重复值等问题,增加数据的准确性和可靠性 整合不同数据,数据的来源和结构可能多种多样, ...