Java多线程实例

所属分类: 软件编程 / java 阅读数: 43
收藏 0 赞 0 分享

在上篇文章给大家介绍了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();
}
}

更多精彩内容其他人还在看

Springmvc restful配置遇到的小坑

本文是小编给大家带了的Springmvc restful配置遇到的小小坑,小编给大家带来了问题原因及解决办法,非常不错,具有参考借鉴价值,感兴趣的朋友一起看下吧
收藏 0 赞 0 分享

Java中的匿名内部类小结

java内部类分为: 成员内部类、静态嵌套类、方法内部类、匿名内部类。这篇文章主要介绍了Java中的匿名内部类的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

Java的云打印Lodop

这篇文章主要介绍了Java的云打印Lodop 的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Java线程池框架核心代码解析

这篇文章主要针对Java线程池框架核心代码进行详细解析,分析Java线程池框架的实现ThreadPoolExecutor,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Java 交换两个变量的数值实现方法

下面小编就为大家带来一篇Java 交换两个变量的数值实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

全面了解JAVA_BaseDAO数据处理类

下面小编就为大家带来一篇全面了解JAVA_BaseDAO数据处理类。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

java、python、JavaScript以及jquery循环语句的区别

本篇文章主要介绍java、python、JavaScript以及jquery的循环语句的区别,这里整理了它们循环语句语法跟示例,以便大家阅读,更好的区分它们的不同
收藏 0 赞 0 分享

基于JDBC封装的BaseDao(实例代码)

下面小编就为大家带来一篇基于JDBC封装的BaseDao(实例代码)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

简单通用JDBC辅助类封装(实例)

下面小编就为大家带来一篇简单通用JDBC辅助类封装(实例)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

浅谈java线程中生产者与消费者的问题

下面小编就为大家带来一篇浅谈java线程中生产者与消费者的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享
查看更多