详解Java线程的创建及休眠

yizhihongxing

详解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日

相关文章

  • ibatis迁移到mybatis3的注意事项

    下面是ibatis迁移到mybatis3的注意事项的完整攻略: 1. 概览 iBATIS作为一个成熟的ORM框架,已经成为本质上与 MyBatis 这个极受欢迎的 ORM 框架的母版。iBATIS 的成功导致了 MyBatis 的产生,MyBatis 与 iBATIS 必然有很多相似之处,包括映射文件、参数映射、参数验证等等。iBATIS 迁移到 MyBat…

    Java 2023年5月20日
    00
  • mybatis实现图书管理系统

    下面是关于mybatis实现图书管理系统的完整攻略。 1.准备工作 1.1 引入mybatis依赖 在项目的pom.xml中添加以下代码,引入mybatis依赖: <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifa…

    Java 2023年5月20日
    00
  • 利用Java实体bean对象批量数据传输处理方案小结

    下面是详细讲解“利用Java实体bean对象批量数据传输处理方案小结”的完整攻略: 一、背景 在Java Web开发中,实体bean对象通常被用于封装表单数据、请求参数等信息,通过实体bean对象可以方便地进行数据传输和处理。在处理大量数据时,使用Java实体bean对象批量传输可以提高系统性能,缩短数据处理时间,同时也可以避免一些重复工作,提高开发效率。 …

    Java 2023年5月26日
    00
  • maven导入本地仓库jar包,报:Could not find artifact的解决

    当我们在使用Maven构建项目时,有时候会遇到Maven导入本地仓库jar包时出现“Could not find artifact”的错误,这可能是因为Maven没有将该jar包添加到本地仓库中。 以下是解决该问题的完整攻略: 1.通过命令行将jar包安装到本地仓库 首先,我们需要打开命令行工具,进入到jar包所在的文件夹。然后,使用以下命令将该jar包安装…

    Java 2023年5月20日
    00
  • springmvc+ajax+formdata上传图片代码实例

    下面我为您详细讲解 “springmvc+ajax+formdata上传图片代码实例” 的完整攻略。 简介 在springmvc框架中,使用ajax向服务器发送请求是非常常见的操作,而其中最常见的请求类型就是上传文件或图片。比如用户注册页面中,我们经常需要用户上传自己的头像。在这种情况下,我们需要运用ajax技术将用户上传的文件或图片发送到服务器进行处理。本…

    Java 2023年5月20日
    00
  • spring mvc实现文件上传并携带其他参数的示例

    关于“spring mvc实现文件上传并携带其他参数的示例”的攻略,请参考以下步骤: 1. 添加依赖 在 pom.xml 文件中添加以下 spring-web 和 commons-fileupload 的依赖: <dependencies> <!– Spring Web –> <dependency> <grou…

    Java 2023年5月20日
    00
  • MyBatis-Plus集成Druid环境搭建的详细教程

    下面我将为你介绍Mybatis-Plus集成Druid环境搭建的详细教程,包括环境搭建、配置和代码演示。首先,我们需要明确一下什么是Mybatis-Plus和Druid。 什么是MyBatis-Plus和Druid? MyBatis-Plus MyBatis-Plus(简称MP)是一个在MyBatis框架基础上的增强工具,省去了很多重复性的代码,提供了更为简…

    Java 2023年5月20日
    00
  • springboot登陆过滤功能的实现代码

    下面我会详细讲解如何在Spring Boot中实现登陆过滤功能,并提供两条示例。 1. Spring Security实现登陆过滤 Spring Security是Spring官方推出的安全框架,能够实现用户认证(登陆)和授权(权限管理)功能。下面将通过一个示例来演示Spring Security实现登陆过滤的具体步骤。 添加Maven依赖 <depe…

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