热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

java---------创建线程的两种方法

一、从Thread类派生创建线程实例定义Thread类的子类,并覆盖其run()方法。创建Thread子类的实例即创建线程对象。用线程对象

一、从Thread类派生创建线程实例

       定义Thread类的子类,并覆盖其run()方法。创建Thread子类的实例即创建线程对象。用线程对象的start()方法启动线程

二、代码实现

package org.Thread;

public class ThreadDemo01 extends Thread
{
int count = 1,number;
public ThreadDemo01(int num)
{
number = num;
System.out.println("创建线程"+number);
}
public void run()
{
while(true)
{
System.out.println("线程" + number + ":计数" + count);
if(++count == 6)
return;
}
}
public static void main(String[] args)
{
for(int i=0;i<3;i++)
{
new ThreadDemo01(i + 1).start();
}
}
}

三、 效果展示


四、实现Runnable接口

         定义Runnable接口的实现类,并实现该接口的run()方法。创建Runnable实现类的实例,然后将该实例作为参数传入Thread类的构造方法来创建Thread对象。用线程对象的start()方法来启动该线程

五、代码实现

package org.Thread;
import java.util.*;
public class ThreadDemo02 implements Runnable
{
public boolean stop = false;
int pauseTime;
String name;
public ThreadDemo02(int x,String n)
{
pauseTime = x;
name = n;
}
public void run()
{
while(!stop)
{
try
{
System.out.println(name+":"+new Date(System.currentTimeMillis()));
Thread.sleep(pauseTime);
}
catch (Exception e)
{
System.out.println(e);
}


}
}
public static void main(String[] args)
{
ThreadDemo02 td = new ThreadDemo02(1000, "当前日期时间");
Thread t = new Thread(td);
t.start();
System.out.println("按回车键终止");
try
{
System.in.read();
}
catch (Exception e)
{

}
td.stop = true;


}
}

六、 效果展示


七、两种创建线程的方法比较

(1)采用继承Thread类的方式

    优点:编写简单,如果需要访问当前线程,无需使用Thread.currentThread()方法,直接使用this,即可获得当前线程

    缺点:因为线程已经继承了Thread类,所以无法再继承其他父类

(2)采用实现Runnable接口方式

    优点:线程可以继承其他的类。在这种方式下,可以多个线程共享同一个目标对象,所以非常适合多个相同线程来处理同一份资源的情况,从而可以将cpu代码和数据分开,形成清晰的模型

     缺点:编程稍微复杂,如果需要访问当前线程,必须使用Thraed.currentThraed()方法   


推荐阅读
  • 探索偶数次幂二项式系数的求和方法及其数学意义 ... [详细]
  • 捕获并处理用户输入数字时的异常,提供详细的错误提示与指导
    在用户输入数字时,程序能够有效捕获并处理各种异常情况,如非法字符或格式错误,并提供详尽的错误提示和操作指导,确保用户能够准确输入有效的数字数据。通过这种方式,不仅提高了程序的健壮性和用户体验,还减少了因输入错误导致的系统故障。具体实现中,使用了Java的异常处理机制,结合Scanner类进行输入读取和验证,确保了输入的合法性和准确性。 ... [详细]
  • 设计实战 | 10个Kotlin项目深度解析:首页模块开发详解
    设计实战 | 10个Kotlin项目深度解析:首页模块开发详解 ... [详细]
  • 本文介绍了UUID(通用唯一标识符)的概念及其在JavaScript中生成Java兼容UUID的代码实现与优化技巧。UUID是一个128位的唯一标识符,广泛应用于分布式系统中以确保唯一性。文章详细探讨了如何利用JavaScript生成符合Java标准的UUID,并提供了多种优化方法,以提高生成效率和兼容性。 ... [详细]
  • SQLite数据库CRUD操作实例分析与应用
    本文通过分析和实例演示了SQLite数据库中的CRUD(创建、读取、更新和删除)操作,详细介绍了如何在Java环境中使用Person实体类进行数据库操作。文章首先阐述了SQLite数据库的基本概念及其在移动应用开发中的重要性,然后通过具体的代码示例,逐步展示了如何实现对Person实体类的增删改查功能。此外,还讨论了常见错误及其解决方法,为开发者提供了实用的参考和指导。 ... [详细]
  • Python 中 json.dumps() 和 json.loads() 的使用方法详解——Python 面试与 JavaScript 面试必备知识
    在 Python 中,`json.dumps()` 和 `json.loads()` 是处理 JSON 数据的核心函数。`json.dumps()` 用于将字典或其他可序列化对象转换为 JSON 格式的字符串,而 `json.loads()` 则用于将 JSON 字符串解析为 Python 对象。本文详细介绍了这两个函数的使用方法及其在 Python 和 JavaScript 面试中的重要性,帮助读者掌握这些关键技能。 ... [详细]
  • 本文深入探讨了Java中正确使用return语句的方法。通过详尽的示例和解释,帮助读者理解return语句在不同场景下的应用,提升代码质量和可读性。希望读者在阅读后能够掌握return语句的最佳实践,从而在实际开发中更加得心应手。 ... [详细]
  • Python 实战:异步爬虫(协程技术)与分布式爬虫(多进程应用)深入解析
    本文将深入探讨 Python 异步爬虫和分布式爬虫的技术细节,重点介绍协程技术和多进程应用在爬虫开发中的实际应用。通过对比多进程和协程的工作原理,帮助读者理解两者在性能和资源利用上的差异,从而在实际项目中做出更合适的选择。文章还将结合具体案例,展示如何高效地实现异步和分布式爬虫,以提升数据抓取的效率和稳定性。 ... [详细]
  • 深入解析 Java UTC 时间处理技术与应用 ... [详细]
  • Java 中 ZonedDateTime 类的天数方法详解及示例代码 ... [详细]
  • 本文深入解析了Python在处理HTML过滤时的实现方法及其应用场景。通过具体实例,详细介绍了如何利用Python代码去除HTML字符串中的标签和其他无关信息,确保内容的纯净与安全。此外,文章还探讨了该技术在网页抓取、数据清洗等领域的实际应用,为开发者提供了宝贵的参考。 ... [详细]
  • 本文全面解析了 gRPC 的基础知识与高级应用,从 helloworld.proto 文件入手,详细阐述了如何定义服务接口。例如,`Greeter` 服务中的 `SayHello` 方法,该方法在客户端和服务器端的消息交互中起到了关键作用。通过实例代码,读者可以深入了解 gRPC 的工作原理及其在实际项目中的应用。 ... [详细]
  • 本文介绍了如何利用Apache POI库高效读取Excel文件中的数据。通过实际测试,除了分数被转换为小数存储外,其他数据均能正确读取。若在使用过程中发现任何问题,请及时留言反馈,以便我们进行更新和改进。 ... [详细]
  • 在Python网络编程中,多线程技术的应用与优化是提升系统性能的关键。线程作为操作系统调度的基本单位,其主要功能是在进程内共享内存空间和资源,实现并行处理任务。当一个进程启动时,操作系统会为其分配内存空间,加载必要的资源和数据,并调度CPU进行执行。每个进程都拥有独立的地址空间,而线程则在此基础上进一步细化了任务的并行处理能力。通过合理设计和优化多线程程序,可以显著提高网络应用的响应速度和处理效率。 ... [详细]
  • Spring框架中的面向切面编程(AOP)技术详解
    面向切面编程(AOP)是Spring框架中的关键技术之一,它通过将横切关注点从业务逻辑中分离出来,实现了代码的模块化和重用。AOP的核心思想是将程序运行过程中需要多次处理的功能(如日志记录、事务管理等)封装成独立的模块,即切面,并在特定的连接点(如方法调用)动态地应用这些切面。这种方式不仅提高了代码的可维护性和可读性,还简化了业务逻辑的实现。Spring AOP利用代理机制,在不修改原有代码的基础上,实现了对目标对象的增强。 ... [详细]
author-avatar
278787061w
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有