真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Java多線程方法有哪些

這篇文章主要介紹“Java多線程方法有哪些”,在日常操作中,相信很多人在Java多線程方法有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Java多線程方法有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

10年積累的成都做網(wǎng)站、網(wǎng)站設(shè)計經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認識你,你也不認識我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有東港免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

一、interrupt方法一種讓線程退出的方式。

import java.util.*;  public class TestInterrupt{      public static void main(String[] args){          MyThread t = new MyThread();          t.start();          try{Thread.sleep(10000);}          catch(InterruptedException i){}          t.interrupt();      }  }   class MyThread extends Thread{      public void run(){          while(true){              try{                  System.out.println("------"+new Date()+"-----");                  Thread.sleep(1000);              }catch(InterruptedException i){                  return;              }          }      }  }

二、join和yield方法
t.join(); //t的run()方法完才會繼續(xù)執(zhí)行當(dāng)前線程方法體
//也就是兩個線程變成了一個線程
t.yield(); //暫停當(dāng)前正在執(zhí)行的線程對象,并執(zhí)行其他線程。方法為靜態(tài)
//哪個線程體執(zhí)行此方法,哪個線程讓步

public class TestYield {    public static void main(String[] args) {      MyThread3 t1 = new MyThread3("t1");      MyThread3 t2 = new MyThread3("t2");      t1.start(); t2.start();    }  }  class MyThread3 extends Thread {    MyThread3(String s){super(s);}    public void run(){      for(int i =1;i<=100;i++){        System.out.println(getName()+": "+i);        if(i%10==0){          yield();        }      }    }  }

三、線程優(yōu)先級別
線程的優(yōu)先級用數(shù)字表示,范圍從1到10,一個線程的缺省優(yōu)先級為5.
Thread.MAX_PRIORITY=1
Thread.MIN_PRIORITY=10
Thread.NORM_PRIORITY=5
例:t.setPriority(Thread.NORM_PRIORITY+3);

四、線程同步
1.同步代碼塊
synchronized(this){  //在執(zhí)行代碼塊過程中,不會被其他線程打斷
... 
}
public sunchronized void method //執(zhí)行此方法時,當(dāng)前對象被鎖定
在Java語言中,引入了對象互斥鎖的概念,保證共享數(shù)據(jù)操作的完整性,每個對象 都對應(yīng)一個可稱為"互斥鎖"的標(biāo)記,這個標(biāo)記保證在任一時刻,只能有一個線程訪 問該對象。
2.線程死鎖

public class TestDeadLock implements Runnable {      public int flag = 1;      static Object o1 = new Object(), o2 = new Object();      public void run() {  System.out.println("flag=" + flag);          if(flag == 1) {              synchronized(o1) {                  try {                      Thread.sleep(500);                  } catch (Exception e) {                      e.printStackTrace();                  }                  synchronized(o2) {                      System.out.println("1");                      }              }          }          if(flag == 0) {              synchronized(o2) {                  try {                      Thread.sleep(500);                  } catch (Exception e) {                      e.printStackTrace();                  }                  synchronized(o1) {                      System.out.println("0");                  }              }          }      }                public static void main(String[] args) {          TestDeadLock td1 = new TestDeadLock();          TestDeadLock td2 = new TestDeadLock();          td1.flag = 1;          td2.flag = 0;          Thread t1 = new Thread(td1);          Thread t2 = new Thread(td2);          t1.start();          t2.start();                }  }

五、生產(chǎn)者消費者問題

public class ProducerConsumer {      public static void main(String[] args) {          SyncStack ss = new SyncStack();          Producer p = new Producer(ss);          Consumer c = new Consumer(ss);          new Thread(p).start();          new Thread(p).start();          new Thread(p).start();          new Thread(c).start();      }  }   class WoTou {      int id;       WoTou(int id) {          this.id = id;      }      public String toString() {          return "WoTou : " + id;      }  }   class SyncStack {        //棧實現(xiàn)      int index = 0;      WoTou[] arrWT = new WoTou[6];    //相當(dāng)于裝物品的籃子            public synchronized void push(WoTou wt) {    //生產(chǎn)物品,線程安全          while(index == arrWT.length) {        //當(dāng)籃子滿了線程等待              try {                              this.wait();                      } catch (InterruptedException e) {                  e.printStackTrace();              }                        }          this.notifyAll();    //開始生產(chǎn)時,叫醒等待的其他線程開始消費          arrWT[index] = wt;              index ++;      }            public synchronized WoTou pop() {        //消費物品,線程安全          while(index == 0) {            //如果籃子空了              try {                  this.wait();        //線程等待,等待生產(chǎn)者開始                           //生產(chǎn),叫醒此線程              } catch (InterruptedException e) {                  e.printStackTrace();              }                        }          this.notifyAll();            //消費時喊醒生產(chǎn)者生產(chǎn)          index--;          return arrWT[index];      }  }   class Producer implements Runnable {            //生產(chǎn)者類      SyncStack ss = null;      Producer(SyncStack ss) {          this.ss = ss;      }            public void run() {          for(int i=0; i<20; i++) {    //生產(chǎn)20個              WoTou wt = new WoTou(i);              ss.push(wt);                          System.out.println("生產(chǎn)了:" + wt);              try {                  Thread.sleep((int)(Math.random() * 200));              } catch (InterruptedException e) {                  e.printStackTrace();              }                      }      }  }   class Consumer implements Runnable {      SyncStack ss = null;      Consumer(SyncStack ss) {          this.ss = ss;      }            public void run() {          for(int i=0; i<20; i++) {        //消費20個              WoTou wt = ss.pop();              System.out.println("消費了: " + wt);              try {                  Thread.sleep((int)(Math.random() * 1000));              } catch (InterruptedException e) {                  e.printStackTrace();              }                      }      }  }

到此,關(guān)于“Java多線程方法有哪些”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
本文題目:Java多線程方法有哪些
網(wǎng)站網(wǎng)址:http://weahome.cn/article/gdhgcd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部