首页 > 开发 > Java > 正文

Java多线程实例

2024-07-13 09:56:00
字体:
来源:转载
供稿:网友

本文给大家介绍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方法开始运行。

 

 
  1. package test; 
  2. import java.util.Vector; 
  3. import java.util.Date; 
  4. /** 
  5. * 线程测试实例 
  6. * @author 静止的流水 
  7. * 
  8. */ 
  9. public class Threadnew 
  10. /** 
  11.  
  12. * @author 静止的流水 
  13. * 
  14. */ 
  15. class ThreadA extends Thread 
  16. private Date runtime; 
  17. public void run() 
  18. System.out.println("ThreadA begin."); 
  19. this.runtime = new Date(); 
  20. System.out.println("ThreadA end."); 
  21. /** 
  22.  
  23. * @author 静止的流水 
  24. * 
  25. */ 
  26. class ThreadB implements Runnable 
  27. private Date runtime; 
  28. public void run() 
  29. System.out.println("ThreadB begin."); 
  30. this.runtime = new Date(); 
  31. System.out.println("ThreadB end."); 
  32. /** 
  33.  
  34. * 
  35. */ 
  36. public void starta() 
  37. Thread threada = new ThreadA(); 
  38. threada.start(); 
  39. /** 
  40.  
  41. * 
  42. */ 
  43. public void startb() 
  44. Runnable threadb = new ThreadB(); 
  45. Thread thread = new Thread(threadb); 
  46. thread.start(); 
  47. /** 
  48.  
  49. * @param args 
  50. */ 
  51. public static void main(String[] args) 
  52. Threadnew test = new Threadnew(); 
  53. test.starta(); 
  54. test.startb(); 


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表