中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

網(wǎng)站開發(fā)建設(shè)培訓(xùn)推廣軟文300字

網(wǎng)站開發(fā)建設(shè)培訓(xùn),推廣軟文300字,軟件開發(fā)工作,網(wǎng)站 擴(kuò)展多線程 同時執(zhí)行多個任務(wù),例如一個人一邊聽歌,一邊跳舞 繼承Thread類實(shí)現(xiàn)多線程的方式 定義一個MyThread類繼承Thread類,重寫里面的run方法 package com.itxs.demo01;/*** Classname : MyThread* Description : TODO 自定義線程繼承Thread類*…

多線程

同時執(zhí)行多個任務(wù),例如一個人一邊聽歌,一邊跳舞

繼承Thread類實(shí)現(xiàn)多線程的方式

定義一個MyThread類繼承Thread類,重寫里面的run方法

package com.itxs.demo01;/*** @Classname : MyThread* @Description : TODO 自定義線程繼承Thread類* @Author : lin_refuel@qq.com*/
public class MyThread extends Thread{@Overridepublic void run() {//super.run();for (int i = 0; i < 20; i++) {System.out.println("i = " + i);}}
}

測試多線程類

package com.itxs.demo01;/*** @Classname : demo01* @Description : TODO 多線程的測試類* @Author : lin_refuel@qq.com*/
public class demo01 {public static void main(String[] args) {// 線程對象創(chuàng)建MyThread my01 = new MyThread();MyThread my02 = new MyThread();MyThread my03 = new MyThread();MyThread my04 = new MyThread();//開啟線程的方法startmy01.start();my02.start();my03.start();my04.start();}
}

線程名字的獲取和設(shè)置

自定義線程繼承Thread類

package com.itxs.demo02;/*** @Classname : MyThread* @Description : TODO 自定義線程 - 繼承Thread類* @Author : lin_refuel@qq.com*/
public class MyThread extends Thread {public MyThread() {}public MyThread(String name) {super(name);}@Overridepublic void run() {for (int i = 0; i < 20; i++) {// this.getName獲取類中自己的Name值System.out.println(this.getName() + " i =" + i);}}
}

測試線程

package com.itxs.demo02;/*** @Classname : demo01* @Description : TODO 多線程名字設(shè)置的方式* @Author : lin_refuel@qq.com*/
public class demo01 {public static void main(String[] args) {//創(chuàng)建線程對象// 方式一:通過構(gòu)造方法進(jìn)行設(shè)置每個線程名字MyThread my01 = new MyThread("線程01");MyThread my02 = new MyThread("線程02");MyThread my03 = new MyThread("線程03");MyThread my04 = new MyThread();// 方式二:通過方法setName設(shè)置線程名字
//        my01.setName("線程01");
//        my02.setName("線程02");
//        my03.setName("線程03");my04.setName("線程04");//開啟線程my01.start();my02.start();my03.start();my04.start();}
}

運(yùn)行結(jié)果:
在這里插入圖片描述

獲取正在運(yùn)行的線程對象

獲取正在運(yùn)行的線程

Thread.currentThread()

通過上面的方法,獲取到每個運(yùn)行線程的名字

package com.itxs.demo02;/*** @Classname : MyThread* @Description : TODO 自定義線程(輸出0-19) - 繼承Thread類* @Author : lin_refuel@qq.com*/
public class MyThread extends Thread {public MyThread() {}public MyThread(String name) {super(name);}@Overridepublic void run() {for (int i = 0; i < 20; i++) {// this.getName獲取類中自己的Name值System.out.println(Thread.currentThread().getName() + " i =" + i);}}
}
package com.itxs.demo02;/*** @Classname : demo03* @Description : TODO 獲取每個正在運(yùn)行的線程的方法* @Author : lin_refuel@qq.com*/
public class demo03 {public static void main(String[] args) {// 創(chuàng)建幾個線程對象,設(shè)置每個線程的名字MyThread my01 = new MyThread("多線程01");MyThread my02 = new MyThread("多線程02");MyThread my03 = new MyThread("多線程03");MyThread my04 = new MyThread("多線程04");//開啟線程my01.start();my02.start();my03.start();my04.start();// main 其實(shí)也是一個線程,但是卻是主線程// 輸出0-19//設(shè)置主線程名字的方法 Thread.currentThread是獲取正在運(yùn)行的線程//setName是設(shè)置名字Thread.currentThread().setName("主線程");for (int i = 0; i < 20; i++) {System.out.println( Thread.currentThread().getName()+"i = " + i);}}
}

線程調(diào)度

  • 兩種線程調(diào)度模型

    • 分時調(diào)度模型:所有線程輪流使用 CPU 的使用權(quán),平均分配每個線程占用 CPU 的時間

    • 搶占調(diào)度模型:優(yōu)先讓優(yōu)先級高的線程使用 CPU,如果線程的歐優(yōu)先級相同,那么隨機(jī)選擇一個,優(yōu)先級高的線程獲取的 CPU 占用時間會相對多一丟丟丟丟丟……

    Java 使用的是搶占式的調(diào)度模型

線程優(yōu)先級設(shè)置

  • Thread 類中設(shè)置和獲取線程優(yōu)先級的方法

    • public final int getPriority():返回次線程的優(yōu)先級

    • public final void setProiority(int newPriority):更改次線程的優(yōu)先級

自定義的線程類-繼承Thread類

package com.itxs.demo02;/*** @Classname : MyThread* @Description : TODO 自定義線程(輸出0-19) - 繼承Thread類* @Author : lin_refuel@qq.com*/
public class MyThread extends Thread {public MyThread() {}public MyThread(String name) {super(name);}@Overridepublic void run() {for (int i = 0; i < 20; i++) {// this.getName獲取類中自己的Name值System.out.println(Thread.currentThread().getName() + " i =" + i);}}
}

優(yōu)先級測試

package com.itxs.demo02;/*** @Classname : demo02* @Description : TODO 線程調(diào)度測試* @Author : lin_refuel@qq.com*/
public class demo02 {public static void main(String[] args) {// 創(chuàng)建線程對象MyThread mt01 = new MyThread("線程01");MyThread mt02 = new MyThread("線程02");MyThread mt03 = new MyThread("線程03");//修改線程的優(yōu)先級mt01.setPriority(Thread.MIN_PRIORITY);//1mt02.setPriority(Thread.NORM_PRIORITY);//5mt03.setPriority(Thread.MAX_PRIORITY);//10// 線程的優(yōu)先級輸出
//        System.out.println(mt01.getPriority());
//        System.out.println(mt02.getPriority());
//        System.out.println(mt03.getPriority());//開啟線程測試那個線程優(yōu)先完成mt03.start();mt02.start();mt01.start();}
}

線程控制

方法名說明
static void sleep(long ms)使當(dāng)前正在執(zhí)行的線程停留指定的毫秒數(shù)
void join()等待這個進(jìn)程死亡
void setDaemon(boolean on)將此線程標(biāo)記為守護(hù)進(jìn)程,當(dāng)運(yùn)行線程都是守護(hù)線程時,JVM 將退出

sleep方法

案例:華山論劍

自定義線程類

package com.itxs.demo02;/*** @Classname : MyThread* @Description : TODO 自定義一個線程 - 繼承Thread類* @Author : lin_refuel@qq.com*/
public class MyThread extends Thread{public MyThread() {}public MyThread(String name) {super(name);}@Overridepublic void run() {for (int i = 1; i <=20 ; i++) {System.out.println(Thread.currentThread().getName() + "出了第"+i+"招");try {Thread.sleep(1000);//停留一秒} catch (InterruptedException e) {e.printStackTrace();}}}
}

sleep測試類

package com.itxs.demo02;/*** @Classname : demo02* @Description : TODO 線程測試 - sleep* @Author : lin_refuel@qq.com*/
public class demo02 {public static void main(String[] args) {//創(chuàng)建線程對象MyThread mt01 = new MyThread("黃固");MyThread mt02 = new MyThread("歐陽鋒");MyThread mt03 = new MyThread("段智興");MyThread mt04 = new MyThread("洪七公");//開啟線程mt01.start();mt02.start();mt03.start();mt04.start();}
}

join方法

歌曲《天下》,原唱:張杰,翻唱:池瑤和高魚

package com.itxs.demo03;/*** @Classname : MyThread* @Description : TODO* @Author : lin_refuel@qq.com*/
public class MyThread extends Thread {public MyThread() {super();}public MyThread(String name) {super(name);}// 定義一個數(shù)組存放歌詞String[] song = {"烽煙起尋愛似浪淘沙","遇見她如春水映梨花","揮劍斷天涯","相思輕放下"};@Overridepublic void run() {for (int i = 0; i < song.length; i++) {System.out.println(Thread.currentThread().getName() + "正在唱:" + song[i]);}}
}

測試-張杰唱完后,兩個翻唱繼續(xù)唱

package com.itxs.demo03;/*** @Classname : demo01* @Description : TODO* @Author : lin_refuel@qq.com*/
public class demo01 {public static void main(String[] args) throws InterruptedException {//創(chuàng)建線程MyThread mt01 = new MyThread("張杰");MyThread mt02 = new MyThread("池瑤");MyThread mt03 = new MyThread("高魚");//開啟線程mt01.start();mt01.join();//等待張杰唱完,mt01執(zhí)行完后執(zhí)行后面的線程mt02.start();mt03.start();}
}

setDaemon()

守護(hù)線程,總結(jié)就是當(dāng)創(chuàng)建的線程對象設(shè)置為守護(hù)線程后,主線程里面的內(nèi)容執(zhí)行完后,所有開啟的多線程都會停止執(zhí)行

自定義的線程,執(zhí)行20次循環(huán)

package com.itxs.demo04;/*** @Classname : MyThread* @Description : TODO - 自定義線程* @Author : lin_refuel@qq.com*/
public class MyThread extends Thread{public MyThread() {super();}public MyThread(String name) {super(name);}@Overridepublic void run() {for (int i = 0; i < 20; i++) {System.out.println(Thread.currentThread().getName()+"報(bào)數(shù):"+i);}}
}

測試守護(hù)線程

package com.itxs.demo04;/*** @Classname : demo01* @Description : TODO* @Author : lin_refuel@qq.com*/
public class demo01 {public static void main(String[] args) {//創(chuàng)建線程對象MyThread mt01 = new MyThread("1號");MyThread mt02 = new MyThread("2號");MyThread mt03 = new MyThread("3號");System.out.println("開始報(bào)數(shù)");//mt01,02,03設(shè)置為守護(hù)線程mt01.setDaemon(true);mt02.setDaemon(true);mt03.setDaemon(true);// 線程開啟mt01.start();mt02.start();mt03.start();// 主線程執(zhí)行三次循環(huán)for (int i = 0; i < 3; i++) {System.out.println("報(bào)數(shù)中");}System.out.println("停止報(bào)數(shù)");}
}

在這里插入圖片描述

線程的生命周期

  • 新建:創(chuàng)建線程對象(通過 start() 進(jìn)入下一個環(huán)節(jié))

  • 就緒:有執(zhí)行資格,沒有執(zhí)行權(quán)(搶占 CPU 的執(zhí)行權(quán))

  • 運(yùn)行:有執(zhí)行資格,有執(zhí)行權(quán)(可能被其他線程搶走 CPU 的執(zhí)行權(quán),則回到就緒狀態(tài),若遇到阻塞式方法,則失去運(yùn)行權(quán)和執(zhí)行這個,等待,當(dāng)阻塞方法調(diào)用結(jié)束之后,回到就緒狀態(tài))

  • 死亡:線程死亡,成為垃圾

http://www.risenshineclean.com/news/56580.html

相關(guān)文章:

  • 網(wǎng)站優(yōu)化 圖片每天新聞早知道
  • 最新網(wǎng)站域名seo關(guān)鍵詞排名優(yōu)化哪家好
  • wifi管理網(wǎng)站百度seo規(guī)則
  • 服務(wù)器2003怎么做網(wǎng)站開戶推廣競價(jià)開戶
  • 北京網(wǎng)站優(yōu)化診斷網(wǎng)站推廣怎么推廣
  • html5移動網(wǎng)站開發(fā)流程怎么建網(wǎng)站平臺賣東西
  • 做網(wǎng)站哪個系統(tǒng)最好今日短新聞20條
  • 上海做門戶網(wǎng)站的公司app推廣活動策劃方案
  • 怎樣做網(wǎng)站賺流量太原百度搜索排名優(yōu)化
  • 網(wǎng)站開發(fā)中怎么樣對接接口新媒體運(yùn)營工作是什么
  • 如何做淘寶店網(wǎng)站設(shè)計(jì)網(wǎng)頁
  • 網(wǎng)站制作設(shè)計(jì)方案百度關(guān)鍵詞推廣公司
  • lnmp 網(wǎng)站開發(fā)總結(jié)站長工具站長之家
  • wordpress grace7 破解深圳百度快照優(yōu)化
  • 做網(wǎng)站帶來好處網(wǎng)站優(yōu)化排名方法
  • 網(wǎng)站建設(shè)實(shí)現(xiàn)功能wix網(wǎng)站制作
  • 超級seo外鏈seo的推廣技巧
  • 做設(shè)計(jì)的有什么網(wǎng)站西安網(wǎng)絡(luò)推廣seo0515
  • 星子網(wǎng)今天最新新聞北京百度推廣排名優(yōu)化
  • 做商城的網(wǎng)站用什么框架好網(wǎng)絡(luò)營銷五個主要手段
  • wordpress 重裝win7優(yōu)化工具哪個好用
  • wordpress手機(jī)登錄跳轉(zhuǎn)頁面模板商丘seo教程
  • 清苑區(qū)建設(shè)網(wǎng)站找那家公司可以商用的電視app永久軟件
  • 可信賴的做網(wǎng)站發(fā)帖子最好的幾個網(wǎng)站
  • 做搜狗手機(jī)網(wǎng)站快速網(wǎng)站開發(fā)與設(shè)計(jì)
  • 網(wǎng)站做自簽發(fā)證書黃金網(wǎng)站軟件免費(fèi)
  • dede怎么做網(wǎng)站日記搜索點(diǎn)擊軟件
  • 一般做網(wǎng)站是用什么程序做的烏魯木齊seo
  • 企業(yè)建設(shè)網(wǎng)站個人總結(jié)報(bào)告seo網(wǎng)站優(yōu)化多少錢
  • 平臺電商網(wǎng)站開發(fā)5月疫情最新消息