java新开一个线程run_创建和启动一个Java线程
创建和启动一个Java线程
创建和启动线程
新建一个线程
Thread thread = new Thread();
启动一个 Java 线程,只需要调用它的 start() 方法
thread.start()
这个例子里没有写其他的代码,当线程启动之后马上就停止了。
有两个办法指定线程去执行代码。一种是创建一个 Thread 的子类,覆盖 run() 方法。第二种是传入一个实现 Runnable 接口的对象给 Thread 的构造方法。
线程子类
创建线程的子类
public class MyThread extends Thread {
public void run() {
System.out.println("MyThread running");
}
}
创建和启动线程
MyThread myThread = new MyThread();
myThread.start();
当然,匿名子类也是可以的
Thread thread = new Thread() {
public void run() {
System.out.println("MyThread Running");
}
};
thread.start();
实现 Runnable 接口
实现接口
public class MyRunnable implements Runnable {
public void run() {
System.out.println("MyRunnable running");
}
}
启动线程
Thread thread = new Thread(new MyRunnable());
thread.start();
也可使用实现 Runnable 接口的匿名类
Runnable myRunnable = new Runnable() {
public void run() {
System.out.println("Runnable running");
}
};
Thread thread = new Thread(myRunnable);
thread.start();
用子类还是实现接口?
都可以。不过我喜欢用实现接口的方式。
run() 和 start() 的区别
调用 start() 方法才是启动线程的正确姿势。
线程名称
给线程取个名字,可以和其它线程区分开来
Thread thread = new Thread("New Thread") {
public void run() {
System.out.println("run by: " + getName());
}
};
thread.start();
System.out.println(thread.getName());
MyRunnable runnable = new MyRunnable();
Thread thread = new Thread(runnable, "New Thread");
thread.start();
System.out.println(thread.getName());
Thread.currentThread()
Thread.currentThread() 方法返回一个执行 currentThread() 方法的 Thread 实例的引用。
Thread thread = Thread.currentThread();
一获取到 Thread 对象的引用,就可调用它的方法,比如获取它的名称
String threadName = Thread.currentThread().getName();
Java Thread Example
public class ThreadExample {
public static void main(String[] args) {
System.out.println(Thread.currentThread().getName());
for (int i = 0; i < 10; i++) {
new Thread("" + i) {
public void run() {
System.out.println("Thread: " + getName() + " running");
}
}.start();
}
}
}
打印结果
main
Thread: 0 running
Thread: 2 running
Thread: 3 running
Thread: 1 running
Thread: 4 running
Thread: 5 running
Thread: 6 running
Thread: 8 running
Thread: 9 running
Thread: 7 running
从打印结果可以看到,即使线程是按顺序(1,2,3...)执行 start() 方法的,thread 1 不一定是第一个打印消息的线程。因此线程是并发执行而不是顺序执行的。由 JVM 或者操作系统决定线程的执行顺序,和线程的 start() 方法执行顺序无关。
java新开一个线程run_创建和启动一个Java线程相关推荐
- 线程的创建与启动——Thread 类有两个常用的构造方法:Thread()与 Thread(Runnable)||多线程运行结果是随机的
线程的创建与启动 在 Java 中,创建一个线程就是创建一个 Thread 类(子类)的对象(实例). Thread 类有两个常用的构造方法:Thread()与 Thread(Runnable).对应 ...
- java线程的创建和启动深度解析
线程的创建和启动 java使用Thread类代表线程,所有的线程对象都必须是Thread类或者其子类的实例. java创建线程有三种方法: 一:继承Thread类创建线程类 通过Thread类来创建并 ...
- Java线程:创建与启动
Java线程:创建与启动 一.定义线程 1.扩展java.lang.Thread类. 此类中有个run()方法,应该注意其用法: public void run() 如果该线程是使用独立的 Runna ...
- Java的知识点25——程序、进程与线程 || 线程的创建和启动
程序.进程与线程 进程的特点:动态性.并发性.独立性 并发和并行的区别 并发:多个CPU同时执行多个任务 并行:一个CPU(采用时间片)同时执行多个任务 注:很多多线程是模拟出来的,真正的多线程是指有 ...
- java线程 创建与启动_浅析Java中线程的创建和启动
前言 线程是一个程序内部的顺序控制流.cpu实际上在一个时间点上,只执行一个.只不过我们把cup分成了多个时间片,由于速度很快,我们看起来像是多个线程.就像你的时间分成几片,这样整体看来做事情有规律, ...
- python 中主线程结束 子线程还在运行么_python 线程之一:线程的创建、启动及运行方式
threading:这个模块在较低级的模块 _thread 基础上建立较高级的线程接口 以后我们就用 threading 模块来管理线程就可以了. Tread 类:控制线程创建.启动及运行方式 一.线 ...
- 多线程编程(2): 线程的创建、启动、挂起和退出
python多线程编程(2): 线程的创建.启动.挂起和退出 如上一节,python的threading.Thread类有一个run方法,用于定义线程的功能函数,可以在自己的线程类中覆盖该方法.而创建 ...
- 全网最硬核 Java 新内存模型解析与实验 - 1. 什么是 Java 内存模型
个人创作公约:本人声明创作的所有文章皆为自己原创,如果有参考任何文章的地方,会标注出来,如果有疏漏,欢迎大家批判.如果大家发现网上有抄袭本文章的,欢迎举报,并且积极向这个 github 仓库 提交 i ...
- java runnable 启动_Java多线程:线程的创建与启动
# 面试题: Java中创建线程有几种方式. 不同的创建方式有什么区别. 如何启动一个线程. # Java中创建线程的方式 JDK源码中的描述:两种 image.png 第一种是继承Thread类,重 ...
- 线程的创建开销大吗?线程创建开销包括哪些?线程池
1-1. 关于时间,创建线程使用是直接向系统申请资源的,这里调用系统函数进行分配资源的话耗时不好说. 关于资源,Java线程的线程栈所占用的内存是在Java堆外的,所以是不受java程序控制的,只受系 ...
最新文章
- Java虚拟机笔记(一):类加载机制
- Acwing第 36 场周赛【完结】
- 【PM模块】维护处理简介
- 如何估算Oracle数据库所需的UNDO表空间的大小
- 透彻理解回文~单链表的逆序~
- pll制作分频器_PLL学习过程记录
- to_csvread_csvisnullisnanisna
- 一文读懂Hive(架构原理,DDL,常用函数,优化技巧)
- 【报告分享】2020解读中国互联网:局部领先、快进的数字化发展.pdf(附下载链接)...
- 西南科技大学计算机专业宿舍条件怎么样,西南科技大学宿舍条件,宿舍环境图片(10篇)...
- SAP WDA 自建Portal
- 【每日算法Day 77】LeetCode 第 181 场周赛题解
- python3.8安装pygame_Python3.8安装Pygame教程
- 从零开始学习SpringCloud
- 什么是Base64算法?——全网最详细讲解
- mysql的max_allowed_packet配置
- 平行四边形 java_Java编写三角形和平行四边形
- CSS,HTML,JS 以及Vue前端面试题八股文总结【看完你就变高手】
- python学习_循环语句
- 生成网站与发布网站的区别