java 多线程:Thread类;Runnable接口
1,进程和线程的基本概念:
2、java中多线程的使用:Thread
构造:
- new Thread()
启动一个新的线程:
- .start()
常用方法:
- Thread.currentThread().getName() //获取当前线程的名字
/**
* @ClassName MyThreadExample
* @projectName: object1
* @author: Zhangmingda
* @description: XXX
* date: 2021/4/19.
*/
public class MyThreadExample {
private static class MyFirstThread extends Thread{
//自己写个线程,重写run()方法
@Override
public void run() {
System.out.println("MyFirstThread运行中:名字是:" + Thread.currentThread().getName());
}
}
public static void main(String[] args) {
MyFirstThread myFirstThread = new MyFirstThread();
myFirstThread.run();//在当前线程中调用run()方法;不会产生新的线程
myFirstThread.start();
System.out.println("main方法中运行的线程名字:" + Thread.currentThread().getName());
/**
* 运行输出:
* main方法中运行的线程名字:main
* MyFirstThread运行中:名字是:Thread-0
*/
}
}

可以看出每次运行顺序不一样
- (1),调用start()之后,程序会通知我们的JVM,告诉jvm我已经准备好了,可以运行了。
- (2),Jvm异步的调用我们的线程对应的run()方法。
- (3),Jvm什么时候运行我们的run()方法,这个是程序员没法控制的(其实呢,还是可以相对的控制,这个之后讲,但是,你要做到绝对的控制它马上运行,还是不行)
- (4),start()方法的调用顺序,不代表线程的run()方法的运行顺序。
3、Thread实现了Runnable接口,通过实现Runnable接口的方式来实现一个线程
Thread 类实现了Runnable接口,该接口只有有一个抽象方法run()


Thread 类构造方法可以传入一个Runnable接口实现类来构造线程实例:

示例代码:
/**
* @ClassName UseRunnableThread
* @projectName: object1
* @author: Zhangmingda
* @description: XXX
* date: 2021/4/19.
*/
public class UseRunnableThread {
private static class MyRunnableThread implements Runnable { @Override
public void run() {
System.out.println("MyRunnableThread" + Thread.currentThread().getName());
}
} public static void main(String[] args) {
Thread thread = new Thread(new MyRunnableThread());
//lambda 表达式方式构造线程方法
Thread thread1 = new Thread(()->System.out.println("Lambda表达式构建的线程,匿名内部类对象:" + Thread.currentThread().getName()) );
thread.start();
thread1.start();
System.out.println("main方法运行的线程:" + Thread.currentThread().getName());
/**
* 运行输出:
* Lambda表达式构建的线程,匿名内部类对象:Thread-1
* MyRunnableThreadThread-0
* main方法运行的线程:main
*/
}
}
java 多线程:Thread类;Runnable接口的更多相关文章
- 探Java多线程Thread类和Runnable接口之间的联系
首先复习一下Java多线程实现机制,Java实现多线程方法有如下这么几种: 1.继承了(extends)Thread类 2.实现了(implements)Runnable接口 也就是说 有如下两种情 ...
- JAVA多线程Thread VS Runnable详解
要求 必备知识 本文要求基本了解JAVA编程知识. 开发环境 windows 7/EditPlus 演示地址 源文件 进程与线程 进程是程序在处理机中的一次运行.一个进程既包括其所要执行的指令,也 ...
- Java多线程Thread类了解和使用
创建线程的两种方式 extends Thread 类 public class WelComeApp { public static void main(String[] args) { Welcom ...
- java 多线程Thread和Runnable的区别
如果一个类继承Thread,则不适合资源共享.但是如果实现了Runable接口的话,则很容易的实现资源共享 实现Runnable接口比继承Thread类所具有的优势:1. 适合多个相同的程序代码的线程 ...
- Java 多线程Thread和Runnable
Thread: class MyThread extends Thread { private int ticketsCont=5; //一共有5张火车票 private String name; / ...
- Java多线程之实现Runnable接口
package org.study2.javabase.ThreadsDemo.runnable; /** * @Auther:GongXingRui * @Date:2018/9/18 * @Des ...
- (CSDN迁移) JAVA多线程实现-实现Runnable接口
实现Runnable接口 implements Runnable 重写run()方法 @Override public void run(){//TODO} 创建线程对象: Thread threa ...
- JAVA多线程Thread与Runnable
一.Runnable Runnable为一个之包含一个run方法的接口 public class MyRunnable implements Runnable{ @Override //表示:预示重写 ...
- Java之多线程(实现Runnable接口)
package test_demo.ThreadsDemo; public class TestRunnable { public static void main(String[] args) { ...
随机推荐
- 流程图(flowchart)语法学习
创建流程图需要选择语言: mermaid流程中的代码包裹graph 这里写顺序end流程图方向:从上到下(TB),从下到上(BT),从左到右(LR),从右到左(RL) TB - 从上到下TD - 自上 ...
- R语言与医学统计图形-【34】绘制统计表格
表的绘制,主要是临床三线表. 1.tableone包 #install.packages('tableone') library(tableone) set.seed(2017) age <- ...
- Oracle-连接多个字段
0.函数concat(A,B)作用:链接字符串 区别: Oracle中:CONCAT()只允许两个参数:(貌似可以内嵌) Mysql中:CONCAT()可以连接多个参数: 1.用||符号进行拼接 例子 ...
- 使用SpringBoot实现文件的下载
上一篇博客:使用SpringBoot实现文件的上传 已经实现了文件的上传,所以紧接着就是下载 首先还是html页面的简单设计 <form class="form-signin" ...
- adverb
An adverb is a word or an expression that modifies a verb, adjective, another adverb, determiner [限定 ...
- Vue相关,vue.nextTick
vue中有一个较为特殊的API,nextTick.根据官方文档的解释,它可以在DOM更新完毕之后执行一个回调,用法如下: // 修改数据 vm.msg = 'Hello' // DOM 还没有更新 V ...
- oracle 日期语言格式化
TO_DATE ('17-JUN-87', 'dd-mm-yy', 'NLS_DATE_LANGUAGE = American')
- spring注解-属性
一.@Value 基本数值 可以写SpEL: #{} 可以写${}取出配置文件[properties]中的值(在运行环境变量里面的值) @Value("张三") private S ...
- Redis-5种基础数据结构
Redis基础数据结构 知识整理源于<Redis深度历险 核心原理与应用实践>这本书 Redis 有的数据结构都以 唯一的 key 字符串作为名称,然后通过这个唯一 key 值来获取相应的 ...
- 第一章-Flink介绍-《Fink原理、实战与性能优化》读书笔记
Flink介绍-<Fink原理.实战与性能优化>读书笔记 1.1 Apache Flink是什么? 在当代数据量激增的时代,各种业务场景都有大量的业务数据产生,对于这些不断产生的数据应该如 ...