当前位置: 首页 > news >正文

【第八章】多线程——Thread类

Thread 类是多线程编程中常用的类,尤其是在基于 Java 语言的开发中。

它提供了创建和控制线程的基本功能。

下面是关于 Thread 类的一些关键点和常见用法:

1.Java 中的 Thread 类

在 Java 中,Thread 类位于 java.lang 包中,用于表示线程。

使用 Thread 类,你可以创建一个新的线程并启动它来执行并发任务。

Thread类的子类创建线程

首先需从 Thread 类派生出一个子类, 在该子类中重写 run() 方法。

例:

     class hand extends Thread

     {

         public void run()

         {……}

     }

继承 Thread 类

  • 创建一个类继承自 Thread 类,并重写 run 方法。
  • 创建该类的实例并调用 start 方法来启动新线程。

3.编程练习

题目:编写一个Java程序,创建两个线程,一个线程打印偶数,另一个线程打印奇数,交替打印1到10的数字。

提示:

  1. 可以使用两个线程分别打印偶数和奇数。
  2. 使用一个共享的计数器来控制打印的数字范围。
  3. 使用wait()和notify()来实现线程的交替打印。

参考代码:

public class PrintNumbers {private static final Object lock = new Object();private static int count = 1;public static void main(String[] args) {Thread oddThread = new Thread(() -> {synchronized (lock) {while (count <= 10) {if (count % 2 != 0) {System.out.println("奇数:" + count);count++;lock.notify();} else {try {lock.wait();} catch (InterruptedException e) {e.printStackTrace();}}}}});Thread evenThread = new Thread(() -> {synchronized (lock) {while (count <= 10) {if (count % 2 == 0) {System.out.println("偶数:" + count);count++;lock.notify();} else {try {lock.wait();} catch (InterruptedException e) {e.printStackTrace();}}}}});oddThread.start();evenThread.start();}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 微信小程序如何跳转微信公众号
  • 苹果手机备忘录共享到微信,为何显示不支持的类型
  • 冷冻式压缩空气干燥机常见几种系统原理图
  • Vue从入门到实战Day07
  • HTML蓝色爱心
  • C++第二十弹---深入理解STL中vector的使用
  • MySQL--联合索引应用细节应用规范
  • 浅谈网络通信(1)
  • 【华为】将eNSP导入CRT,并解决不能敲Tab问题
  • 爬山算法介绍
  • JS根据所选ID数组在源数据中取出对象
  • 【Linux学习】深入探索进程等待与进程退出码和退出信号
  • 非关系型数据库NOSQL
  • echarts- 热力图, k线图,雷达图
  • Linux-Web服务搭建面试题-2
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • iOS | NSProxy
  • java 多线程基础, 我觉得还是有必要看看的
  • Javascript编码规范
  • Java精华积累:初学者都应该搞懂的问题
  • java中具有继承关系的类及其对象初始化顺序
  • MySQL几个简单SQL的优化
  • React中的“虫洞”——Context
  • SQLServer之创建显式事务
  • 什么是Javascript函数节流?
  • 试着探索高并发下的系统架构面貌
  • 新版博客前端前瞻
  • Hibernate主键生成策略及选择
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第1节 (全局数据、栈和堆)
  • (LeetCode C++)盛最多水的容器
  • (二)换源+apt-get基础配置+搜狗拼音
  • (二)学习JVM —— 垃圾回收机制
  • (附源码)php新闻发布平台 毕业设计 141646
  • (函数)颠倒字符串顺序(C语言)
  • (六)Flink 窗口计算
  • (三)Kafka离线安装 - ZooKeeper开机自启
  • (详细文档!)javaswing图书管理系统+mysql数据库
  • (轉)JSON.stringify 语法实例讲解
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • ******之网络***——物理***
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .net core开源商城系统源码,支持可视化布局小程序
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .NET 给NuGet包添加Readme
  • .Net6使用WebSocket与前端进行通信
  • .Net程序帮助文档制作
  • .NET中winform传递参数至Url并获得返回值或文件
  • @Transactional类内部访问失效原因详解
  • [AIGC] Spring Interceptor 拦截器详解
  • [Android]使用Android打包Unity工程