欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java多线程实例

程序员文章站 2024-03-07 21:23:39
在上篇文章给大家介绍了,通过本文给大家介绍java多线程实例,对java多线程感兴趣的朋友一起学习吧 首先给大家说下多线程的优缺点 多线程的优点: 1)资源利用率更好...

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