java併發之Thread和Runnable

java開發中不可避免用到多線程狀況,好比web中常見的Servlet、Struts2都是運用到多線程,多線程的根本目的是爲了更快的執行。其餘經常使用到的多線程好比設計到大量I/O操做,用多線程可明顯提高效率。
java中最基礎的併發類就是Runnable.class,Runnable是一個接口,只要實現實現Runnables,重寫方法run() 就能夠實現多線程操做。java

舉個實現Runnable的例子:web

public class LiftOff implements Runnable {
  protected int countDown = 10; // Default
  private static int taskCount = 0;
  private final int id = taskCount++;
  public LiftOff() {}
  public LiftOff(int countDown) {
    this.countDown = countDown;
  }
  public String status() {
    return "#" + id + "(" +
      (countDown > 0 ? countDown : "Liftoff!") + "), ";
  }
  public void run() {
    while(countDown-- > 0) {
      System.out.print(status());
      Thread.yield();
    }
  }
} ///:~
public static void main(String[] args) {
    Thread t1 = new Thread(new LiftOff());
    t1.start();
}

從這個例子中,能夠看出在java中多線程的實現多線程是很簡單的事,可是多線程的學習是易懂難通,會碰見死鎖、邏輯混亂等各種問題,因此使用多線程必須慎之又慎。
Runnable以後有一個基礎的併發類就是Thread.class,Thread就是實現了Runnable的一個類,可是在Runnable的基礎上新增了一些方法包括:線程優先級、後臺線程、分組、命名等,仍是很是實用的。多線程

所以咱們通常使用多線程能夠實現Runnable.class或者繼承Thread.class.通常使用Runnable便可這樣還能夠繼承其餘類併發

好了本次文章就到這來,簡單地說明了java多線程的一些知識,下次會關於多線程方法更深刻的闡述。學習

相關文章
相關標籤/搜索