• Java多线程


    【创建线程的方式】

    1. 扩展Thread类:

    Extend class java.lang.Thread and override run():
      class Plum extends Thread {
        public void run() {
          /* more code */
        }
      }

    Plum P = new Plum();
    P.start();

    2. 实现Runnable接口:

    Implement the Runnable interface, and use that class in the Thread constructor:

    class Mango implements Runnable {

      public void run() { 

        /* more code */

      }

    Mango m = new Mango(); 

    Thread t1 = new Thread( m ); 

    t1.start(); 

    【线程的优先级】

    可以通过调用Thread类的setPriority()方法改进线程优先级:final void setPriority(int level)

    这里,形参level指定了调用线程的新的优先级设置。线程level的值必须在MIN_PRIORITY~MAX_PRIORITY范围内。目前,这两个常量的值分别是1和10.要将线程设置为默认优先级,可以将其指定为NORM_PRIORITY,目前它的值为5。在Thread类内部,这些优先级定义为static final的变量。可以通过调用Thread类的setPriorty()方法来获得当前的优先级设置,如下所示:final int getPriority()

    【同步】

    1. 使用同步方法:将方法用关键字synchronized修饰。当调用该方法时,调用的线程进入对象的监视器中,将对象锁定。当对象锁定时,其他线程就不能进入该方法,也不能进入该对象类定义的其他同步方法。当线程从方法返回时,监视器解除对对象的锁定,运行该对象用于下一线程。

    synchronized void foo() { ... }

    2. synchronized语句:synchronized块的一般形式如下所示:

    synchronized(objref){

      //statements to be synchronized

    }

    这里,objref是需要同步的对象的引用。一旦进入了同步块,其他线程既不能调用同步方法,也不能进入objref对象指定的同步块,直到退出该块。

    【线程通信】

    因为Object类实现了方法wait()、notify()、和notifyAll(),所以这些方法是所有对象的一部分。这些方法只能在synchronized内容中调用。他们的使用方法如下:当一个线程暂时从运行状态中阻塞时,它调用wait()方法。这引起线程休眠,并释放对象的监视器,运行其他线程使用该对象。在之后的某个时间,当其他线程进入同一监视器并调用方法notify()或notifyAll()时,休眠的线程醒来。 

  • 相关阅读:
    AndroidWear开发之下载SDK[Android W/Android L]
    Androidの共享登录之方案研究
    AndroidのUI体验之ImmersiveMode沉浸模式
    谷歌Volley网络框架讲解——HttpStack及其实现类
    谷歌Volley网络框架讲解——网络枢纽
    05-使用jQuery操作input的values
    02-jQuery的选择器
    01-jQuery的介绍
    07-BOM client offset scroll 的系列
    06-js中的中的面向对象 定时器
  • 原文地址:https://www.cnblogs.com/wxgblog/p/javaduoxiancheng.html
Copyright © 2020-2023  润新知