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) { ...
随机推荐
- Kubernetes容器编排探索与实践v1.22.1-上半部分
概述 **本人博客网站 **IT小神 www.itxiaoshen.com Kubernetes官网地址 https://kubernetes.io Kubernetes GitHub源码地址 htt ...
- Codeforces 566C - Logistical Questions(点分治)
Codeforces 题目传送门 & 洛谷题目传送门 神仙题 %%% 首先考虑对这个奇奇怪怪的 \(t^{3/2}\) 进行一番观察.考虑构造函数 \(f(x)=ax^{3/2}+b(d-x) ...
- 洛谷 P4183 - [USACO18JAN]Cow at Large P(点分治)
洛谷题面传送门 点分治 hot tea. 首先考虑什么样的点能够对以 \(u\) 为根的答案产生 \(1\) 的贡献.我们考虑以 \(u\) 为根对整棵树进行一遍 DFS.那么对于一个点 \(v\), ...
- HDU 6036 Division Game
HDU 6036 Division Game 考虑每堆石头最多操作 $ \sum e $ 次,考虑设 $ f(x) $ 表示某一堆石头(最开始都是一样的)操作 $ x $ 次后变成了 $ 1 $ 的方 ...
- java中接口可以继承接口
今天阅读别人的代码才发现,接口是可以继承接口的 一个类只能extends一个父类,但可以implements多个接口. 一个接口则可以同时extends多个接口,却不能implements任何接口. ...
- 🚀 RabbitMQ课程发布-KuangStudy
RabbitMQ课程上线(44集) 视频教程地址:https://www.kuangstudy.com/course/detail/1323452886432944129 专栏地址:https://w ...
- 日常Javaweb 2021/11/19
Javaweb Dao层: //连接数据库,实现增查功能 package dao; import java.sql.Connection; import java.sql.DriverManager; ...
- 『学了就忘』Linux启动引导与修复 — 68、Linux系统运行级别
目录 1.Linux系统运行级别介绍 2.查看运行级别 3.修改当前系统的运行级别 4.系统默认运行级别 5./etc/rc.d/rc.local文件说明 1.Linux系统运行级别介绍 Linux默 ...
- Spark中的分区方法详解
转自:https://blog.csdn.net/dmy1115143060/article/details/82620715 一.Spark数据分区方式简要 在Spark中,RDD(Resilien ...
- Android数据存取
Android数据存取 一.SharedPreferencesc存取数据 SharedPreferences是使用键值对的方式来存储数据的,也就是在保存一条数据时,需要给这条数据提供一个对应的键,这样 ...