zoukankan      html  css  js  c++  java
  • 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()时,休眠的线程醒来。 

  • 相关阅读:
    00005-js 获取uuid
    00004-form 表单的清空、重置 (jquery)
    使用Socket进行通信
    使用ServerSocket创建TCP服务器端
    TCP协议基础
    基于TCP协议的网络通信
    3D MAX在立方体的使用
    应用纹理贴图
    使用OpenGL ES绘制3D图形
    GL10控制图形旋转
  • 原文地址:https://www.cnblogs.com/wxgblog/p/javaduoxiancheng.html
Copyright © 2011-2022 走看看