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

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

Java多線程的相關(guān)機(jī)制是什么

本篇內(nèi)容主要講解“Java多線程的相關(guān)機(jī)制是什么”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Java多線程的相關(guān)機(jī)制是什么”吧!

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:空間域名、網(wǎng)頁(yè)空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、縉云網(wǎng)站維護(hù)、網(wǎng)站推廣。

一 線程的基本概念

線程是一個(gè)程序內(nèi)部的順序控制流.一個(gè)進(jìn)程相當(dāng)于一個(gè)任務(wù),一個(gè)線程相當(dāng)于一個(gè)任務(wù)中的一條執(zhí)行路徑.;多進(jìn)程:在操作系統(tǒng)中能同時(shí)運(yùn)行多個(gè)任務(wù)(程序);多線程:在同一個(gè)應(yīng)用程序中有多個(gè)順序流同時(shí)執(zhí)行;Java的線程是通過(guò)java.lang.Thread類來(lái)實(shí)現(xiàn)的;JVM啟動(dòng)時(shí)會(huì)有一個(gè)由主方法(public static void main(){})所定義的線程;可以通過(guò)創(chuàng)建Thread的實(shí)例來(lái)創(chuàng)建新的線程;每個(gè)線程都是通過(guò)某個(gè)特定Thread對(duì)象所對(duì)應(yīng)的方法run()來(lái)完成其操作的,方法run()稱為線程體,通過(guò)調(diào)用Thread類的start()方法來(lái)啟動(dòng)一個(gè)線程。

二 線程的創(chuàng)建和啟動(dòng)

可以有兩種方式創(chuàng)建新的線程:
***種:
1.定義線程類實(shí)現(xiàn)Runnable接口
2.Thread myThread = new Thread(target);   //target為Runnable接口類型
3.Runnable中只有一個(gè)方法:public void run();用以定義線程運(yùn)行體
4.使用Runnable接口可以為多個(gè)線程提供共享的數(shù)據(jù)
5.在實(shí)現(xiàn)Runnable接口的類的run()方法定義中可以使用Thread的靜態(tài)方法public static Thread currentThread();獲取當(dāng)前線程的引用

第二種:
1.可以定義一個(gè)Thread的子類并重寫其run方法如:
class MyThread extends Thread {   
public void run() {...}

}   
2.然后生成該類的對(duì)象:
MyThread myThread = new MyThread();

三 線程控制的基本方法

isAlive():判斷線程是否還"活"著
getPriority():獲得線程的優(yōu)先級(jí)數(shù)值
setPriority():設(shè)置線程的優(yōu)先級(jí)數(shù)值
Thread.sleep():將當(dāng)前線程睡眠指定毫秒數(shù)
join():調(diào)用某線程的該方法,將當(dāng)前線程與該線程"合并",即等待該線程結(jié)束,再恢復(fù)當(dāng)前線程的運(yùn)行
yield():讓出cpu,當(dāng)前線程進(jìn)入就緒隊(duì)列等待調(diào)度
wait():當(dāng)前線程進(jìn)入對(duì)象的wait pool
notify()/notifyAll():喚醒對(duì)象的wait pool中的一個(gè)/所有等待線程

四 線程同步

實(shí)現(xiàn)生產(chǎn)者消費(fèi)者問(wèn)題來(lái)說(shuō)明線程問(wèn)題,舉例如下所示:

  1. /**  
    * 生產(chǎn)者消費(fèi)者問(wèn)題  
    */ 
    package com.basic.thread;  
    /**  
    * @author johnston678  
    *  
    * @version 2009-05-06  
    */ 
    public class ProducerConsumer {  
         /**  
          * @param args  
          */ 
         public static void main(String[] args) {          
             ProductBox pb = new ProductBox();  
             Producer p = new Producer(pb);  
             Consumer c = new Consumer(pb);  
              
             Thread pThread = new Thread(p);  
             Thread cThread = new Thread(c);  
             pThread.setPriority(Thread.MAX_PRIORITY);  
              
             pThread.start();  
             cThread.start();  
         }  
    }  
    /**  
    * 產(chǎn)品對(duì)象  
    * @author johsnton678  
    */ 
    class Product {  
         int id;  
         public Product(int id) {  
             super();  
             this.id = id;  
         }  
          
         public String toString(){  
             return "Product:" + id;  
         }  
    }  
    /**  
    * 產(chǎn)品盒對(duì)象  
    * @author johnston678  
    */ 
    class ProductBox {  
         Product[] productbox = new Product[6];  
         int index = 0;  
         public ProductBox() {  
             super();          
         }  
          
         public synchronized void push(Product p) {  
             while (index == productbox.length) {  
                 try {  
                     this.wait();  
                 } catch (InterruptedException e) {  
                     // TODO Auto-generated catch block  
                     e.printStackTrace();  
                 }  
             }  
             this.notify();          
             productbox[index] = p;  
             index ++;  
         }  
          
         public synchronized Product pop() {  
             while (index == 0) {  
                 try {  
                     this.wait();  
                 } catch (InterruptedException e) {  
                     // TODO Auto-generated catch block  
                     e.printStackTrace();  
                 }  
             }  
             this.notify();  
             index --;  
             return productbox[index];  
              
         }  
    }  
    /**  
    * 生產(chǎn)者  
    * @author johnston678  
    */ 
    class Producer implements Runnable {  
         ProductBox productbox = null;  
          
         public Producer(ProductBox productbox) {  
             super();  
             this.productbox = productbox;  
         }  
         @Override 
         public void run() {  
             // TODO Auto-generated method stub  
             for (int i=0; i<10; i++) {  
                 Product p = new Product(i);  
                 productbox.push(p);  
                 System.out.println("produce:" + p);  
                  
                 try {  
                     Thread.sleep((int)(Math.random() * 200));  
                 } catch (InterruptedException e) {  
                     e.printStackTrace();  
                 }  
             }  
         }  
          
    }  
    /**  
    * 消費(fèi)者  
    * @author johnston678  
    */ 
    class Consumer implements Runnable {  
         ProductBox productbox = null;  
          
         public Consumer(ProductBox productbox) {  
             super();  
             this.productbox = productbox;  
         }  
         @Override 
         public void run() {  
             // TODO Auto-generated method stub  
             for (int i=0; i<10; i++) {  
                 Product p = productbox.pop();  
                 System.out.println("consume:" + p);  
                  
                 try {  
                     Thread.sleep((int)(Math.random() * 1000));  
                 } catch (InterruptedException e) {  
                     e.printStackTrace();  
                 }  
             }  
         }  
          
    }

到此,相信大家對(duì)“Java多線程的相關(guān)機(jī)制是什么”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!


本文名稱:Java多線程的相關(guān)機(jī)制是什么
當(dāng)前鏈接:http://weahome.cn/article/gioooo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部