详解Java线程的创建及休眠

详解Java线程的创建及休眠

线程的概念

Java 线程是一条执行路径,每个线程都是独立的,它们之间不会相互影响,每个线程有自己的计数器、栈和程序计数器。线程是轻量级的,因为创建和销毁线程所需的时间和资源相对较少。

Java线程的创建

Java 线程是通过 Thread 类来实现的。创建线程的方式有两种,分别是:

继承 Thread 类

public class MyThread extends Thread {
    public void run() {
        System.out.println("Thread is running.");
    }
}

MyThread thread = new MyThread();
thread.start();

实现 Runnable 接口

public class MyRunnable implements Runnable {
    @Override
    public void run() {
        System.out.println("Thread is running.");
    }
}

MyRunnable runnable = new MyRunnable();
Thread thread = new Thread(runnable);
thread.start();

线程的休眠

线程休眠是指暂停当前线程的执行,让出 CPU 时间片,让其他线程或进程得到执行机会。Java 中线程的休眠由 Thread 类的 sleep() 方法实现。

try {
    // 休眠3秒
    Thread.sleep(3000);
} catch(InterruptedException ex) {
    ex.printStackTrace();
}

示例说明

示例1:继承 Thread 类

public class MyThread extends Thread {
    private String name;
    public MyThread(String name) {
        this.name = name;
    }
    public void run() {
        System.out.println(name + " is running.");
        try {
            // 休眠5秒
            Thread.sleep(5000);
        } catch(InterruptedException ex) {
            ex.printStackTrace();
        }
        System.out.println(name + " is complete.");
    }
}

// 创建两个线程
MyThread thread1 = new MyThread("Thread1");
MyThread thread2 = new MyThread("Thread2");

// 启动线程
thread1.start();
thread2.start();

此示例中,我们创建了两个继承了 Thread 类的线程,分别为 thread1 和 thread2,它们执行时会打印出自己的名称,并且在执行过程中休眠了 5 秒钟。输出结果可能是:

Thread1 is running.
Thread2 is running.
Thread1 is complete.
Thread2 is complete.

示例2:实现 Runnable 接口

public class MyRunnable implements Runnable {
    private String name;
    public MyRunnable(String name) {
        this.name = name;
    }
    @Override
    public void run() {
        System.out.println(name + " is running.");
        try {
            // 休眠5秒
            Thread.sleep(5000);
        } catch(InterruptedException ex) {
            ex.printStackTrace();
        }
        System.out.println(name + " is complete.");
    }
}

// 创建两个线程
MyRunnable runnable1 = new MyRunnable("Thread1");
MyRunnable runnable2 = new MyRunnable("Thread2");

// 创建线程对象
Thread thread1 = new Thread(runnable1);
Thread thread2 = new Thread(runnable2);

// 启动线程
thread1.start();
thread2.start();

此示例中,我们创建了两个实现了 Runnable 接口的线程,分别为 runnable1 和 runnable2,它们执行时会打印出自己的名称,并且在执行过程中休眠了 5 秒钟。输出结果可能是:

Thread1 is running.
Thread2 is running.
Thread1 is complete.
Thread2 is complete.

总结

Java 的线程机制可以进一步优化程序的性能。线程的创建分两种方式:继承 Thread 类和实现 Runnable 接口。线程的休眠可以通过 sleep() 方法实现,让出 CPU 时间片,让其他线程或进程得到执行机会。在多线程编程中,线程的协作和同步非常重要,需要注意线程的安全问题。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Java线程的创建及休眠 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • java Springboot实现教务管理系统

    下面我将结合一些简单示例,分享一下实现Java Spring Boot教务管理系统的完整攻略。 概述 Java Spring Boot是一个快速开发框架,它可以让我们轻松创建RESTful API应用。教务管理系统是一种基于Web技术的应用程序,可以用于学校的教务管理。Java Spring Boot可以用于构建教务管理系统的后端。 教务管理系统的主要功能包…

    Java 2023年5月19日
    00
  • java如何用正则表达式匹配与提取字符串

    Java中使用正则表达式匹配和提取子字符串可以通过Java标准库中的Pattern和Matcher类实现。以下是使用正则表达式进行匹配和提取的攻略: 步骤1:创建正则表达式 首先需要创建一个正则表达式来匹配和提取字符串。正则表达式是由一些特殊字符和普通字符组成的模式,用于描述要匹配的字符串的形式。例如,正则表达式\d+ 可以匹配一个或多个数字。 步骤2:编译…

    Java 2023年5月27日
    00
  • 详解java数组进行翻转的方法有哪些

    详解Java数组进行翻转的方法有哪些 Java中提供了多种翻转数组的方法,可以通过修改数组元素的顺序或者创建新数组来实现。本文将为大家介绍四种常用的翻转数组的方法。 1. 利用for循环实现 public static int[] reverseArray(int[] array) { int length = array.length; int[] res…

    Java 2023年5月26日
    00
  • 创建一个空的IBM DB2 ECO数据库的方法

    创建一个空的 IBM DB2 ECO 数据库需要按照以下步骤进行: 步骤一:打开 IBM DB2 数据库控制台 首先需要在 IBM DB2 数据库控制台中打开一个空的命令行窗口。在控制台菜单栏选择“工具”->“命令行窗口”,或者使用快捷键“Alt+F2”打开空的命令行窗口。 步骤二:连接到 IBM DB2 数据库实例 在打开的命令行窗口中输入以下命令,…

    Java 2023年6月15日
    00
  • javaWeb项目部署到阿里云服务Linux系统的详细步骤

    下面是Java Web项目部署到阿里云服务Linux系统的详细步骤攻略: 一、购买阿里云ECS云服务器 首先,在阿里云官网注册账号并购买云服务器ECS,可以根据需求购买不同配置的云服务器。购买完成后,需要进行初始化和配置,设置登录密码,绑定公网IP等。 二、安装Java环境 登录云服务器ECS,可使用Windows的远程桌面连接或使用SSH客户端连接到云服务…

    Java 2023年5月19日
    00
  • VScode 打造完美java开发环境最新教程

    VS Code 打造完美 Java 开发环境最新教程 Visual Studio Code 是一款免费、轻量级且功能强大的 IDE,非常适合 Java 开发人员使用。本文将介绍如何使用 VS Code 打造完美的 Java 开发环境。 安装 Java 开发环境 在 VS Code 中开发 Java 需要先安装 Java 开发环境。可以从 Oracle 官网下…

    Java 2023年5月19日
    00
  • JDBC连接MySql数据库步骤 以及查询、插入、删除、更新等

    下面是JDBC连接MySql数据库的完整攻略: JDBC连接MySql数据库步骤 导入Mysql JDBC驱动包到项目中,通过Class.forName()方法加载驱动包。 Class.forName("com.mysql.cj.jdbc.Driver") 定义数据库连接信息,包括数据库地址、端口、名称、用户名和密码。 String ur…

    Java 2023年5月20日
    00
  • 30分钟入门Java8之lambda表达式学习

    下面是关于“30分钟入门Java8之lambda表达式学习”的完整攻略: 什么是lambda表达式 Lambda表达式是Java8中引入的一种新的语法,它可以替代匿名内部类的写法,在某些场景下可以让代码更简洁、更易懂,并且可以提升代码的可读性和可维护性。 lambda表达式的语法 Lambda表达式的基本语法如下: (parameters) -> ex…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部