Java多线程实例

 更新时间:2015年11月11日 11:56:00   投稿:mrr  
本文给大家介绍java多线程实例,对java多线程知识感兴趣的朋友参考下吧

在上篇文章给大家介绍了java多线程的实现方式,通过本文给大家介绍java多线程实例,对java多线程感兴趣的朋友一起学习吧

首先给大家说下多线程的优缺点

多线程的优点:

1)资源利用率更好
2)程序设计在某些情况下更简单
3)程序响应更快

多线程的代价:

1)设计更复杂

虽然有一些多线程应用程序比单线程的应用程序要简单,但其他的一般都更复杂。在多线程访问共享数据的时候,这部分代码需要特别的注意。线程之间的交互往往非常复杂。不正确的线程同步产生的错误非常难以被发现,并且重现以修复。

2)上下文切换的开销

当CPU从执行一个线程切换到执行另外一个线程的时候,它需要先存储当前线程的本地的数据,程序指针等,然后载入另一个线程的本地数据,程序指针等,最后才开始执行。这种切换称为“上下文切换”(“context switch”)。CPU会在一个上下文中执行一个线程,然后切换到另外一个上下文中执行另外一个线程。上下文切换并不廉价。如果没有必要,应该减少上下文切换的发生。

定义和启动线程主要有两个关键技术:

第一:线程类必须实现java.lang.Runnable接口或者继承java.lang.Thread类,并且都要实现run方法,其中run方法没有输入,没有输出,也无异常。

第二:调用Thread类的start方法启动线程,当获得cpu资源后,start方法自动调用线程run方法开始运行。

package test;
import java.util.Vector;
import java.util.Date;
/**
 * 线程测试实例
 * @author 静止的流水
 *
 */
public class Threadnew
{
 /**
 * 
 * @author 静止的流水
 *
 */
class ThreadA extends Thread
{
 private Date runtime;
 public void run()
 {
 System.out.println("ThreadA begin.");
 this.runtime = new Date();
 System.out.println("ThreadA end.");
 }
 }
/**
 * 
 * @author 静止的流水
 *
 */
class ThreadB implements Runnable
{
 private Date runtime;
 public void run()
 {
 System.out.println("ThreadB begin.");
 this.runtime = new Date();
 System.out.println("ThreadB end.");
 }
 }
/**
 * 
 *
 */
public void starta()
{
 Thread threada = new ThreadA();
 threada.start();
}
/**
 * 
 *
 */
public void startb()
{
 Runnable threadb = new ThreadB();
 Thread thread = new Thread(threadb);
 thread.start();
 }
/**
 * 
 * @param args
 */
public static void main(String[] args)
{
 Threadnew test = new Threadnew();
 test.starta();
 test.startb();
}
}

相关文章

  • Windows10下的超详细Java安装全过程

    Windows10下的超详细Java安装全过程

    文章主要介绍了如何在Windows 10系统下安装Java开发工具包(JDK),包括Java的下载与安装步骤以及Java环境的配置方法,最后通过命令行验证Java环境是否配置成功
    2025-01-01
  • Gradle环境下导出Swagger为PDF的步骤详解

    Gradle环境下导出Swagger为PDF的步骤详解

    这篇文章主要介绍了Gradle环境下导出Swagger为PDF的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-06-06
  • Spring配置类源码分析详解

    Spring配置类源码分析详解

    这篇文章主要介绍了Spring配置类解析源码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-09-09
  • Spring Boot 应用程序中配置使用consul的方法

    Spring Boot 应用程序中配置使用consul的方法

    配置是 Spring Boot 应用程序中的一部分,主要用于配置服务端口、应用名称、Consul 服务发现以及健康检查等功能,下面给大家介绍Spring Boot 应用程序中配置使用consul,感兴趣的朋友一起看看吧
    2025-04-04
  • Java中Logger定义的3种方式及最佳实践

    Java中Logger定义的3种方式及最佳实践

    这篇文章主要介绍了Java中三种常见的Logger定义方式及其优缺点,同时文章还讨论了Logger的命名和访问修饰符的最佳实践,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-02-02
  • spring boot aop 记录方法执行时间代码示例

    spring boot aop 记录方法执行时间代码示例

    这篇文章主要介绍了spring boot aop 记录方法执行时间代码示例,分享了相关代码,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02
  • SpringBoot 多Profile使用与切换方式

    SpringBoot 多Profile使用与切换方式

    这篇文章主要介绍了SpringBoot 多Profile使用与切换方式,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • 新手学习JQuery基本操作和使用案例解析

    新手学习JQuery基本操作和使用案例解析

    这篇文章主要介绍了新手学习JQuery基本操作和使用案例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • SpringBoot下载文件的实现及速度对比

    SpringBoot下载文件的实现及速度对比

    这篇文章主要介绍了SpringBoot下载文件的实现及速度对比,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • springboot config 拦截器使用方法实例详解

    springboot config 拦截器使用方法实例详解

    本文介绍Spring-Boot中使用拦截器的相关知识,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2018-05-05

最新评论