美文网首页
java多线程的方法

java多线程的方法

作者: 戴马 | 来源:发表于2016-05-27 11:10 被阅读51次

1.setPriority():设置线程的优先权;

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

用法:在高优先级的线程中加上sleep(5000),当高优先级的线程执行sleep(5000)后,就会暂停5000毫秒,其它线程就可以执行了。

3.yield():与sleep()类似,但不可以由用户指定暂停的时间长短。暂停线程的执行,给其它具有相同优先级的线程执行的机会,若此时没有其他线程执行,则此线程继续执行。这个函数并不会释放锁住的对象。

4.wait():类似sleep(),不同的是wait()会先释放锁住的对象,然后再执行等待的动作。这个函数属于Object类。另外,wait()所等待的对象必须先锁住,因此,它只能用在同步化程序段或者同步化方法内,否则会抛出异常lllegalMonitorStateException.

5.join():等待加入的线程执行完毕才会执行下一个线程。加入的线程通过interrput()来唤醒。注意该方法也要捕获异常。

6.notify()和notifyAll():这两个方法以及wait()用于协调多个线程对共享数据的存储,所以必须要在Synchronized语句块中使用者三个方法,即数据对象必须是上锁的,是线程安全的。Synchornized是用户保护共享数据,阻止其他线程对共享数据的存储,但是这样就会使得程序的流程变得很不灵活。就需要这三个方法来灵活的控制。

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

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

注意 这三个方法都是java.lang.Ojbect的方法!

7.run()和start():把需要并行处理的代码放在run()方法中,start()方法启动线程将自动调用run()方法,这是由java的内存机制规定的。并且run()方法必须是pubic访问权限,返回值类型为void。

8.关键字Synchronized

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

wait()和notify(),notifyAll()是Object类的方法,sleep()和yield()是Thread类的方法。

相关文章

  • 5月份第一周学习安排

    学习内容: java多线程及线程同步的方法(使用) java多线程各种同步方法的原理和优缺点 java多线程设计模...

  • Java多线程学习(三)——synchronized(上)

    在前两节的《Java多线程学习(一)——多线程基础》和《Java多线程学习(二)——Thread类的方法介绍》中我...

  • Java多线程-实例解析

    Java多线程实例 3种实现方法 Java中的多线程有三种实现方式: 1.继承Thread类,重写run方法。Th...

  • Java多线程之线程池(ThreadPoolExecutor)实

    在上一篇文章Java中实现多线程的3种方法介绍和比较中,我们讲解了Java中实现多线程的3种方法。使用多线程,就必...

  • java多线程基础

    多线程 线程,进程,多线程 一、java线程 1. 线程状态 2. 线程方法 方法说明setPriority(in...

  • Java 多线程知识点

    Java多线程并发 一、 java多线程创建方式 继承Tread类将自己的类继承Tread类,并重写run()方法...

  • java线程&和各种奇奇怪怪的锁

    1、Java线程 一、Java多线程常用的两种实现方法 1、 继承Thread类 子类继承Thread类具备多线程...

  • Java并发之synchronized

    Java多线程同步关键词是常用的多线程同步手段。它可以修饰静态类方法,实例方法,或代码块。修饰static静态方法...

  • 关于多线程面试的一些问题

    关于多线程的一些问题(java) 标签(空格分隔): 并发 面试 多线程 java中有几种方法可以实现一个线程? ...

  • JAVA 核心笔记 || [3] 修饰符

    JAVA 多线程 JAVA多线程: 最大限度的利用CPU 并行执行程序的多个部分 创建线程的两种方法 扩展 Thr...

网友评论

      本文标题:java多线程的方法

      本文链接:https://www.haomeiwen.com/subject/rmoxdttx.html