多线程是java提供的一种机制,它允许多条指令在系统中并发执行,彼此间互相独立。
实现多线程的两种方式:
1.继承Thread类
步骤:1,继承Thread。
2,复写Thread类中的run方法,将多个控制单元要运行的代码存放其中。
其实run方法,就是存放线程要运行的代码区域。
3,通过建立子类对象,创建控制单元。
4,调用控制单元的start方法,开启线程,并运行run方法
例:
public class MyRunnable {
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
new MyThread();
}
while (true) {
System.out.println(Thread.currentThread().getName() + "主线程正在运行");//currentThread()方法返回当前线程对象
getName()获得当前线程的名称
}
}
}
class MyThread extends Thread {
private static int count = 0;
MyThread() {
super("" + ++count); //调用Thread类的构造方法Thread(String name) 给线程起一个名字
start();
}
public void run() { //run()方法内是线程要执行的代码
while (true) {
System.out.println(Thread.currentThread().getName() + "子线程正在运行");
}
}
}
2.实现Runnable接口
步骤:1,建立Runnable接口的子类。
2,覆盖run方法。
3,通过Thread类建立控制单元。并将实现了Runnable接口的子类对象作为参数传递给Thread类的构造函数。
(为什么呢?为让创建的控制单元去运行自定义的run方法。因为该run方法所属的是Runnable接口的子类对象。)
4,调用控制单元的start方法开启线程,并运行run方法。
例:
public class MyRunnable {
public static void main(String[] args) {
MyThread mt = new MyThread();
for (int i = 0; i < 5; i++) {
Thread t = new Thread(mt); //通过Thread类的构造函数Thread(Runnable target) 跟当前接口引用建立联系
t.start();
}
while (true) {
System.out.println(Thread.currentThread().getName() + "主线程正在运行");
}
}
}
class MyThread implements Runnable{
public void run() {
while(true)
System.out.println(Thread.currentThread().getName() + "子线程正在运行");
}
}
使用实现Runnable创建多线程的优缺点:避免了java单继承特性带来的局限性,使得我们能够在一个类中包容所有的代码,有利于封装,它的缺点在于,我们只能使用一套代码,若想创建多个线程并使各个线程执行不同的代码,则仍必须额外创建类,如果这样的话,在大多数情况下也许还不如直接用多个类分别继承 Thread 来得紧凑。
线程的四种状态:
1. 被创建状态:线程对象已经被创建但是还没有调用start()方法开启线程
2. 运行状态:线程可以执行,虽然不一定正在执行。CPU 时间随时可能被分配给该线程,从而使得它执行。
3. 消亡状态:正常情况下 run() 执行完毕使得线程死亡或者调用 stop()后,但是调用stop()会产生异常。
4. 冻结状态:线程不会被分配 CPU 时间,无法执行。在使用sleep(),wait(),notify()时。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/liuxiaolei7676/archive/2010/04/02/5446057.aspx
分享到:
相关推荐
globalmousekeyhook InputSimulator
免费JAVA毕业设计 2024成品源码+论文+录屏+启动教程 启动教程:https://www.bilibili.com/video/BV1SzbFe7EGZ 项目讲解视频:https://www.bilibili.com/video/BV1Tb421n72S 二次开发教程:https://www.bilibili.com/video/BV18i421i7Dx
基于麻雀搜索算法优化SVR回归预测模型:以身体脂肪含量数据集的精准预测为研究对象,基于麻雀搜索算法优化SVR回归预测模型 输入不限,单输出 数据选用:身体脂肪含量数据集 针对SVR回归预测模型采用麻雀搜索算法 ,基于麻雀搜索算法; SVR回归预测模型优化; 身体脂肪含量数据集; 算法优化SVR模型,基于麻雀搜索算法优化SVR预测身体脂肪含量模型
1、文件内容:perl-Net-DNS-Nameserver-0.72-6.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/perl-Net-DNS-Nameserver-0.72-6.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
1、文件内容:perl-Class-Singleton-1.4-14.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/perl-Class-Singleton-1.4-14.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
C++-example-数组奇偶数分离.rar
免费JAVA毕业设计 2024成品源码+论文+录屏+启动教程 启动教程:https://www.bilibili.com/video/BV1SzbFe7EGZ 项目讲解视频:https://www.bilibili.com/video/BV1Tb421n72S 二次开发教程:https://www.bilibili.com/video/BV18i421i7Dx
JAVA**
免费JAVA毕业设计 2024成品源码+论文+录屏+启动教程 启动教程:https://www.bilibili.com/video/BV1SzbFe7EGZ 项目讲解视频:https://www.bilibili.com/video/BV1Tb421n72S 二次开发教程:https://www.bilibili.com/video/BV18i421i7Dx
自然语言处理导论+网络预览版(张奇)
一个使用 C++ 结合 DeepSeek 相关功能的源码,模拟一个简单的问答场景,使用 DeepSeek 模型来回答用户提出的问题。 实现思路 模型和分词器加载:利用 libtorch 加载 DeepSeek 模型,使用 tokenizers-cpp 加载对应的分词器。 问题处理:对用户输入的问题进行分词和编码,转化为模型可处理的张量形式。 模型推理:将编码后的问题输入到模型中进行推理,获取预测结果。 结果解码:把模型输出的结果解码为可读的文本。 环境准备 安装 PyTorch C++ 库(libtorch):从 PyTorch 官方网站 下载适合你系统的预编译版本。 安装 tokenizers-cpp:可以从其 GitHub 仓库 获取并编译安装。
,三菱FX3U ST语言程序模板 1 程序采用三菱FX3U的PLC编写。 2 触摸屏是台达 3 程序由以下部分组成 3.1 开机准备 3.2 复位 3.3 加热控制 3.4 暂停控制 3.5自动运行 3.6 生产管理 3.7节控制 3.8自动紧急停止 3.9 手动程序 3.10 手动复位 3.11 程序输出 3.12 气缸报警 3.13 密码管理 3.14 辅助控制 如果你是初学者,不建议去看。 如果你有一定的经验,可以更一步的提高技术。 为以后做运控控制卡,运动控制器做好基础。 是一个很不错的程序。
免费JAVA毕业设计 2024成品源码+论文+录屏+启动教程 启动教程:https://www.bilibili.com/video/BV1SzbFe7EGZ 项目讲解视频:https://www.bilibili.com/video/BV1Tb421n72S 二次开发教程:https://www.bilibili.com/video/BV18i421i7Dx
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
JavaEE
1、文件内容:perl-Module-Implementation-0.06-6.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/perl-Module-Implementation-0.06-6.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
1、文件内容:perl-Image-Xbm-1.08-21.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/perl-Image-Xbm-1.08-21.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
1、文件内容:perl-HTTP-Date-6.02-8.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/perl-HTTP-Date-6.02-8.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
基于FPGA技术的HDMI视频输出实现策略与应用案例分析,基于fpga实现hdmi视频输出的实现 ,基于FPGA; 实现HDMI; 视频输出; 关键技术; 视频处理; 信号转换; 驱动开发,基于FPGA的HDMI视频输出实现技术
"平面磨床电气系统升级:S7-1200 PLC改造的详细方案与解析",No.173 S7-1200 MCGS M7120型平面磨床电气控制系统的PLC改造 带解释的梯形图接线图原理图图纸,io分配,组态画面 ,关键词: S7-1200 PLC; MCGS M7120型平面磨床; 电气控制系统; PLC改造; 梯形图接线图; 原理图图纸; IO分配; 组态画面。,《S7-1200 PLC在M7120型平面磨床电气系统改造中的应用》