国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

JAVA線程用法詳解

2019-11-26 15:27:00
字體:
供稿:網(wǎng)友

本文配合實例較為詳細的講解了Java的線程技術(shù),相信對于深入理解Java程序設(shè)計有一定的幫助。具體如下:

很多人在學(xué)習(xí)JAVA時都對線程都有一定的了解,而當我們開始接觸Android開發(fā)時,才真真正正的發(fā)現(xiàn)了線程是多麼的重要,本文就把對Java線程的用法心得分享給大家,供大家參考。

首先,大家一定要分清線程和進程不是一回事,進程是什么呢?進程就如我們需要執(zhí)行class文件,而線程才是真正調(diào)用CPU資源來運行的。一個class文件一般只有一個進程,但線程可以有很多個,線程的執(zhí)行是一種異步的執(zhí)行方式。

一、如何在main函數(shù)中再開啟一個線程:

示例代碼如下:

public class Thread_one {  public static void main(String [] args){    Run run = new Run();    //run.run();//此為方法的調(diào)用,和線程有著天壤之別    Thread thread = new Thread(run);    thread.start();//啟動線程,調(diào)用線程的run()方法    for(int i=1; i<=20; i++){      System.out.println("主線程i的 值:--------"+i);    }  }}class Run implements Runnable{  @Override  public void run() {    for(int i=1; i<=20; i++){      System.out.println("子線程i的 值:"+i);    }  }}

二、線程中的sleep方法

示例代碼如下:

public class Thread_sleep {  /*   * 線程停頓   */  public static void main(String [] args){    Runone run = new Runone();    Thread thread = new Thread(run);     thread.start();    try {      Thread.sleep(5000);      thread.interrupt();//中斷線程的執(zhí)行      //thread.stop();//相對中斷線程,stop過于粗暴,不建議使用,一般在需要強制關(guān)閉子線程時方使用此方法    } catch (InterruptedException e) {      e.printStackTrace();    }  }}class Runone implements Runnable{  @Override  public void run() {    for(int i=1 ; i<10; i++){      try {        Thread.sleep(1000);        System.out.println("-----"+new Date()+"-----");      } catch (InterruptedException e) {        return ;//當捕獲到子線程被中斷時,直接關(guān)閉子線程      }    }  }}

在這里特別說明一點,thread.interrupt();可以中斷線程的執(zhí)行,相對stop溫柔那么一點點,不過還不是最佳的關(guān)閉線程的方法,下面就為大家提供一種方式:

public class Thread_stop {  public static void main(String [] args){    Runthree run = new Runthree();    Thread th = new Thread(run);    th.start();    try {      Thread.sleep(5000);    } catch (InterruptedException e) {      e.printStackTrace();    }    run.setStop();  }}class Runthree implements Runnable{  boolean flag;  @Override  public void run() {    flag = true;    int i = 0;    while(flag){      try {        System.out.println("子線程----"+(i++));        Thread.sleep(1000);      } catch (InterruptedException e) {        e.printStackTrace();      }    }  }  public void setStop(){    flag = false;  }  }

下面就簡單給大家介紹一下線程中的合并和讓出:

一、如何合并線程,此處調(diào)用了join()方法

示例代碼如下:

public class Thread_join {  /*   * 合并線程   */  public static void main(String [] args){    Runtwo run = new Runtwo();    Thread thread = new Thread(run);    thread.start();    try {      thread.join();//合并線程,此時相當于方法調(diào)用    } catch (InterruptedException e) {      e.printStackTrace();    }    for(int i=0; i<10; i++){      System.out.println("主線程:"+i);    }  }}class Runtwo implements Runnable{  @Override  public void run() {    for(int i=0; i<10; i++){      System.out.println("子線程:----"+i);    }  }  }

二、如何讓出線程,此處調(diào)用了Thread的yield()方法,如下所示:

public class Thread_yield {  /**讓出CPU   * @param args   */  public static void main(String[] args) {    Th th = new Th("aaa");    th.start();    for(int i = 0 ; i<=10; i++){      System.out.println("主線程----"+i);    }  }}class Th extends Thread{  Th(){}  Th(String s){super(s);}  @Override  public void run() {    for(int i = 0; i<=10; i++){      if(i%3!=0){        System.out.println("子線程"+i);      }else{        System.out.println("子線程i="+i+" 線程進行切換");        yield();//從Thread繼承方可使用此方法      }    }  }}

最后和大家分享一下關(guān)于線程的優(yōu)先級的問題,代碼如下所示:

public class Thread_priority {  /*   * priority設(shè)置線程的優(yōu)先級   * Thread默認的優(yōu)先級為5;Thread的最大優(yōu)先級為10,最小為0   */  public static void main(String [] args){    T1 t1 = new T1();    T2 t2 = new  T2();    t1.start();      //t1.setPriority(Thread.NORM_PRIORITY+3);//設(shè)置t1的優(yōu)先級    t2.start();  }}class T1 extends Thread{  @Override  public void run() {    for(int i = 0; i<50; i++){      System.out.println("線程T1-----"+i);    }  }}class T2 extends Thread{  @Override  public void run() {    for(int i = 0; i<50; i++){      System.out.println("線程T2"+i);    }  }  }

相信大家通過以上代碼基本已經(jīng)了解JAVA中的線程機制,希望本文所述對大家深入學(xué)習(xí)Java程序設(shè)計有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 循化| 宝兴县| 昌吉市| 股票| 孟津县| 通河县| 北宁市| 娄底市| 武强县| 高唐县| 房产| 特克斯县| 谷城县| 高邮市| 闽清县| 车致| 郴州市| 兴宁市| 东海县| 金平| 天台县| 定结县| 乌拉特中旗| 揭东县| 旬邑县| 赤水市| 滦南县| 翁牛特旗| 彭山县| 五寨县| 佛教| 宁武县| 石嘴山市| 大关县| 九江县| 佛学| 靖江市| 临桂县| 慈利县| 灵台县| 灵石县|