Java常用API(十)——多线程基础

2023-11-02

多线程:允许"同时"执行多段代码。实际上多线程是并发运行的,每段代码都是走走停停的。CPU会在这些线程间快速切换,保证每段代码都有进度。从而感官上是同时运行。
线程的创建:
第一种创建方式:定义一个线程类并继承线程Thread,然后重写run方法。run方法定义线程执行的任务代码。

package thread;
public class ThreadDemo {
	public static void main(String[] args) {
		Thread t1=new MyThread1();
		Thread t2=new MyThread2();
		/**启动线程要执行start方法,而不是直接调用run方法 */
		t1.start();
		t2.start();
	}
}
class MyThread1 extends Thread{
	public void run() {
		for (int i =0;i<1000;i++) {
			System.out.println(" ");		
		}
	}
}
class MyThread2 extends Thread{
	public void run() {
		for (int i =0;i<1000;i++) {
			System.out.println(".");		
		}
	}
}

第一种创建线程的方式的不足:
1.java是单继承,导致了无法再继承其他类来实现代码复用,不利于开发。
2.由于在线程内部直接重写run方法定义了线程要执行的任务,导致该线程只能执行该任务,使得线程与任务存在必然的强耦合关系,复用性变差。

第二种创建方式:
实现Runnable接口单独定义线程任务。

package thread;
public class ThreadDemo2{
	public static void main(String[] args){
		Runnable r1=new MyRunnable1();
		Runnable r2=new MyRunnable2();
		Thread t1=new Thread(r1);
		Thread t2=new Thread(r2);
		t1.start();
		t2.start();
	}
}
class MyRunnable1 implements Runnable{
	public void run() {
		for (int i =0;i<1000;i++) {
			System.out.println(00);		
		}	
	}
}
class MyRunnable2 implements Runnable{
	public void run() {
		for (int i =0;i<1000;i++) {
			System.out.println(111111);		
		}	
	}
}

也可以使用匿名内部类的方式完成两种线程的创建:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java常用API(十)——多线程基础 的相关文章

随机推荐

  • Random的nextInt方法

    Random类中的nextInt 方法 注 不带参数 会随机产生所有有效的整数 包括正数 负数和零 Random类中的nextInt int n 方法 会产生 0 n 之间的随机int值 包含0 不包含n 两种生成介于 0 100 的随机数
  • C语言学习笔记(6)——字符串的输入输出

    之前讲的putchar getchar 都是字符的输入输出 字符串的输入输出除了基本的scanf printf 也有puts gets fgets fputs 等 如果想要把一个字符串读取到程序当中 得先为它预留一个存储空间 再用输入函数获
  • 仿京东纯javascript轮播图

  • ease-out

    w3c
  • BES2300x笔记(3) -- 编写自动化编译脚本

    哈喽大家好 这是该系列博文的第三篇 篇 lt lt 系列博文索引 快速通道 gt gt 一 前言 接着上一篇 我们已经实现了通过指令来分别生成左右耳固件 但感觉上还不是很方便 第一 如果需要改回IO口区分 还是要去动代码 第二 每次想要生成
  • Python 生成器 generator之next和send运行流程

    http blog csdn net pfm685757 article details 49924099 对于普通的生成器 第一个next调用 相当于启动生成器 会从生成器函数的第一行代码开始执行 直到第一次执行完yield语句 第4行
  • Vue安装单文件组件

    安装 npm npm 全称为 Node Package Manager 是一个基于Node js的包管理器 也是整个Node js社区最流行 支持的第三方模块最多的包管理器 npm v 由于网络原因 安装 cnpm npm install
  • pivotMaxValues报错

    1 出现错误的操作 在列转行且用指定的列的值填充时报错 且列转行的字段个数超过10000个 2 具体错误 Exception in thread main org apache spark sql AnalysisException The
  • php layui文件批量上传,layui+php实现多文件上传的方法

    layui php实现多文件上传的方法 发布时间 2020 05 18 15 57 23 来源 亿速云 阅读 118 作者 小新 今天小编给大家分享的是layui php实现多文件上传的方法 相信很多人都不太了解 为了让大家更加了解 所以给
  • SEO百度搜索引擎优化网站排名

    目录 seo优化 介绍seo是什么 网站更新 网站排名在21世纪的意义 网站为电商引流 百度算法规则 排名流程 seo策略 规则 学会在线球里玩 单页面收录显示 必要条件 链接数量 日志统计 及时优化seo策略 降低识别难度 收录越多排名就
  • Matlab:*.txt转换为*.mat

    在许多应用中 将其他仿真软件输出的数据导入Matlab中应用 Matlab导入的数据文件格式为 mat 而其他仿真输出数据格式为 txt 因此要在使用之前将 txt格式转换为 mat格式 语句如下 Load txt 为文件存储路径及文件名
  • 环保产业发展前景:“智能化”为绿色环保注入新动能

    摘要 随着我国环境治理要求的日益严格 环保设备市场需求巨大 产业持续快速增长 在智慧产业快速发展的同时 具备浓厚 云 色彩的环保设备在环境治理应用体系中将更有优势 智能化 数据化应用将会智慧环保 未来环保设备行业市场发展前景巨大 图绿色 智
  • 鼓励师加成太刺激了,鼻血喷了半斤,代码不一会儿就写完了...

    本文原创公众号 不会笑青年 授权转载请联系微信 laughyouth369 授权后 请在原创发表48小时后转载 我知道你在看
  • STM32F103ZET6【标准库】----- 04串口5的IO口收发数据实验测试

    链接 串口1的两组IO口收发数据实验 链接 串口2的两组IO口收发数据实验 链接 串口3的三组IO口收发数据实验 链接 串口4的一组IO口收发数据实验 一 硬件介绍 本次实验用到的单片机是STM32F103ZET6 正点原子战舰开发板 用到
  • Linux 网桥支持LLDP 透传的解决方法

    inux 虚拟网桥默认会悄悄地删除LLDP消息 发送到LLDP Multicast地址01 80 C2 00 00 0E 和01 80 C2 00 00 xx范围内的其他控制帧 原因可以在802 1AB标准中找到 该标准规定 the des
  • Window 通过cmd查看端口占用、相应进程、杀死进程

    一 查看所有进程占用的端口 在开始 运行 cmd 输入 netstat ano 可以查看所有进程 二 查看占用指定端口的程序 当你在用IIS发布程序时 经常会遇到端口80被占用的情况 我们想知道是哪个程序或进程占用了端口 可以用该命令 ne
  • java——为什么重写hashCode还需要重写equals

    hashCode与equals方法的作用其实一样 在java里面我们都是用它们来比较两个对象是否一致 那为和我们还需要使用hashCode 这里其实使用hashCode是为了提高效率 采取重写hashcode方法 先进行hashcode比较
  • 中学计算机课小课题,中学信息技术课题题目

    中学信息技术课题题目 分类 课题研究 发表时间 2019 04 19 10 27 信息技术是主要用于管理和处理信息所采用的各种技术的总称 在中学信息技术教学过程中 会遇到一些难以解决的问题 成为我们研究课题的选择对象范围 当然确定研究选题
  • 【mysql】日常遇到的问题解决

    目录 MySQL 删除数据库报错 1010 Error dropping database can t rmdir ERR 1452 Cannot add or update a child row a foreign key constr
  • Java常用API(十)——多线程基础

    多线程 允许 同时 执行多段代码 实际上多线程是并发运行的 每段代码都是走走停停的 CPU会在这些线程间快速切换 保证每段代码都有进度 从而感官上是同时运行 线程的创建 第一种创建方式 定义一个线程类并继承线程Thread 然后重写run方