`
心动音符
  • 浏览: 336613 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Java多线程技术

阅读更多
一、run()和start()

  这两个方法应该都比较熟悉,把需要并行处理的代码放在run()方法中,start()方法启动线程将自动调用 run()方法,这是由Java的内存机制规定的。并且run()方法必须是public访问权限,返回值类型为void.

  二、关键字Synchronized

  这个关键字用于保护共享数据,当然前提是要分清哪些数据是共享数据。每个对象都有一个锁标志,当一个线程访问该对象时,被Synchronized修饰的数据将被“上锁”,阻止其他线程访问。当前线程访问完这部分数据后释放锁标志,其他线程就可以访问了。

public ThreadTest implements Runnable 
  { 
  public synchronized void run(){ 
  for(int i=0;i<10;i++) 
  { 
  System.out.println(" " + i); 
  } 
  } 
  public static void main(String[] args) 
  { 
  Runnable r1 = new ThreadTest(); 
  Runnable r2 = new ThreadTest(); 
  Thread t1 = new Thread(r1); 
  Thread t2 = new Thread(r2); 
  t1.start(); 
  t2.start(); 
  } 
  }


以上这段程序中的 i 变量并不是共享数据,也就是这里的Synchronized关键字并未起作用。因为t1,t2两个线程是两个对象(r1,r2)的线程。不同的对象其数据是不同的,所以r1和r2两个对象的i变量是并不是共享数据。

  当把代码改成如下:Synchronized关键字才会起作用

Runnable r = new ThreadTest(); 
  Thread t1 = new Thread(r); 
  Thread t2 = new Thread(r); 
  t1.start(); 
  t2.start();


三、sleep()
  使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁。也就是如果有Synchronized同步块,其他线程仍然不同访问共享数据。注意该方法要捕获异常

  比如有两个线程同时执行(没有Synchronized),一个线程优先级为MAX_PRIORITY,另一个为MIN_PRIORITY,如果没有Sleep()方法,只有高优先级的线程执行完成后,低优先级的线程才能执行;但当高优先级的线程sleep(5000)后,低优先级就有机会执行了。

  总之,sleep()可以使低优先级的线程得到执行的机会,当然也可以让同优先级、高优先级的线程有执行的机会。

  四、join()

  join()方法使调用该方法的线程在此之前执行完毕,也就是等待调用该方法的线程执行完毕后再往下继续执行。注意该方法也要捕获异常。

  五、yield()

  它与sleep()类似,只是不能由用户指定暂停多长时间,并且yield()方法只能让同优先级的线程有执行的机会。

  六、wait()和notify()、notifyAll()

  这三个方法用于协调多个线程对共享数据的存取,所以必须在Synchronized语句块内使用这三个方法。前面说过Synchronized 这个关键字用于保护共享数据,阻止其他线程对共享数据的存取。但是这样程序的流程就很不灵活了,如何才能在当前线程还没退出Synchronized数据块时让其他线程也有机会访问共享数据呢?此时就用这三个方法来灵活控制。

  wait()方法使当前线程暂停执行并释放对象锁标志,让其他线程可以进入Synchronized数据块,当前线程被放入对象等待池中。当调用 notify()方法后,将从对象的等待池中移走一个任意的线程并放到锁标志等待池中,只有

  锁标志等待池中的线程能够获取锁标志;如果锁标志等待池中没有线程,则notify()不起作用。

  notifyAll()则从对象等待池中移走所有等待那个对象的线程并放到锁标志等待池中。
分享到:
评论

相关推荐

    Java多线程技术及其在网络编程中的应用.pdf

    ### Java多线程技术及其在网络编程中的应用 #### 引言 Java作为一种强大的面向对象的编程语言,由SUN公司开发,旨在支持分布式计算。它不仅具备简单的语法、面向对象的特点,还拥有跨平台的特性、高可靠性和安全性...

    Java多线程技术在网络通信系统中的应用.pdf

    总结来说,Java多线程技术在网络通信系统中的应用包括了线程间通信的原理、多线程实现网络通信的原理、线程安全及同步控制的有效途径,以及网络通信编程中的Socket类实现。掌握这些技术要点,对于进行高效、稳定、...

    Java多线程技术精讲

    Java多线程技术是Java编程中的重要组成部分,它允许程序同时执行多个任务,极大地提高了程序的效率和响应性。在现代计算机系统中,多线程是实现并发处理的关键技术,尤其在服务器端应用和高性能计算中不可或缺。 ...

    Java多线程技术及其在网络编程中的应用.caj

    Java多线程技术及其在网络编程中的应用.caj

    基于Java多线程技术的网络编程.pdf

    Java多线程技术在网络编程中的应用 Java多线程技术是Java语言中的一种强大功能,它使得Java在网络编程中被广泛采用于开发多用户具有并发服务器的网络聊天室等应用程序。Java的多线程机制可以方便地减少并发并行程序...

    Java多线程技术在物流仿真软件开发中的应用.pdf

    Java多线程技术在物流仿真软件开发中的应用 本文主要介绍了Java多线程技术在物流仿真软件开发中的应用,通过对Java多线程技术的介绍,将其应用于物流仿真软件的开发,实现物流过程中的分布交互式仿真。同时,采用...

    Java多线程技术实现矩阵乘积计算

    适合初学者使用,Java多线程技术实现矩阵乘积计算

    Java多线程技术(实验)

    ### Java多线程技术知识点详解 #### 一、实验目的 本实验旨在帮助学习者深入理解Java中的多线程编程技巧。具体目标包括: 1. **掌握Java中的多线程编程**:熟悉如何在Java中利用多线程来提高程序性能和响应能力。...

    基于Java多线程技术的测井仪三维仿真.pdf

    "基于Java多线程技术的测井仪三维仿真" 基于Java多线程技术的测井仪三维仿真.pdf文件的主要内容是关于基于Java多线程技术的测井仪三维仿真,实现了测井仪零件的装配动画和液体流动的模拟。下面是对该文件的知识点...

    Java多线程技术在WebGIS客户端小程序中的应用.pdf

    在深入探讨Java多线程技术在WebGIS客户端小程序中的应用之前,首先要了解WebGIS和Java多线程技术的基础知识。WebGIS是一种利用互联网技术来发布和处理地理信息的系统,它能够让用户通过浏览器访问地理位置数据和执行...

    java多线程技术论文

    java多线程技术论文—毕业设计论文说明书.

    基于Java多线程技术的项目进度并行仿真研究.pdf

    基于Java多线程技术的项目进度并行仿真研究 本研究论文主要介绍了基于Java多线程技术的项目进度并行仿真研究。该研究采用了系统仿真的思想,通过对项目中的工序进行建模,并通过计算得到工期的估计。研究结果表明,...

    java多线程技术整理

    Java多线程技术是Java编程中的重要组成部分,它允许程序同时执行多个任务,极大地提高了程序的效率和响应性。在Java中,多线程主要通过`Thread`类、实现`Runnable`接口或`Callable`接口以及使用`ExecutorService`...

    java多线程技术实现矩阵乘法计算

    不过,我将基于标题“java多线程技术实现矩阵乘法计算”来构建相关的知识点。 在Java中实现多线程进行矩阵乘法计算,主要是利用并发编程技术,这样可以显著提高大型矩阵运算的速度,尤其是当矩阵尺寸较大时,单线程...

    Java多线程技术的网络编程探讨.pdf

    本文将重点探讨Java多线程技术在复杂网络编程中的应用,包括多线程技术的概念、实现方式、启动方法以及一些控制线程行为的机制。 在计算机编程领域,多线程技术是一种允许在同一时间内执行多个指令的技术,这些指令...

    基于java多线程技术

    Java多线程技术是Java编程中的重要组成部分,它允许程序同时执行多个任务,极大地提高了程序的效率和响应性。在本文中,我们将深入探讨多线程的概念、如何在Java中实现多线程以及相关的安全问题。 一、多线程概念 ...

    Java多线程技术详解

    Java多线程技术详解 在计算机编程中,多线程是一种重要的并发处理机制,它允许多个任务在同一个程序中并行执行。Java作为一种强健的面向对象的编程语言,提供了丰富的多线程支持,使得开发者能够高效地利用系统资源...

    基于Java多线程技术实现的粒子群优化算法

    ### 基于Java多线程技术实现的粒子群优化算法 #### 一、引言 粒子群优化算法(Particle Swarm Optimization, PSO)是一种基于群体智能的优化方法,最初由Eberhart和Kennedy在1995年提出。它模拟了鸟类觅食过程中的...

    Java多线程技术探讨.doc

    Java多线程技术是Java编程中的重要组成部分,它允许程序同时执行多个任务,极大地提高了程序的效率和响应速度。本文将深入探讨Java多线程的相关概念、创建与使用,以及特殊类型的线程如守护线程和线程组。 1. 线程...

Global site tag (gtag.js) - Google Analytics