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

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

Java中怎么創(chuàng)建自己的線程對象

本篇內(nèi)容主要講解“Java中怎么創(chuàng)建自己的線程對象”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Java中怎么創(chuàng)建自己的線程對象”吧!

成都創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、富陽網(wǎng)絡(luò)推廣、重慶小程序開發(fā)、富陽網(wǎng)絡(luò)營銷、富陽企業(yè)策劃、富陽品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);成都創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供富陽建站搭建服務(wù),24小時(shí)服務(wù)熱線:18982081108,官方網(wǎng)址:www.cdcxhl.com

默認(rèn)情況下,主線程和垃圾回收線程都是由系統(tǒng)創(chuàng)建的,但是我們需要完成自己的功能----創(chuàng)建自己的線程對象。

 * java將線程面向?qū)ο罅?形成的類就是Thread,在Thread類內(nèi)部執(zhí)行任務(wù)的方法叫run()

 *

 * 注意:如果想讓run作為任務(wù)區(qū),必須讓他去被自動(dòng)調(diào)用.我們通過執(zhí)行start()方法,來開啟線程,繼而實(shí)現(xiàn)run方法的自動(dòng)調(diào)用.

## 直接使用Thread創(chuàng)建線程對象

//  //分析:由于我們實(shí)現(xiàn)的實(shí)際功能Thread類是決定不了的,所以沒有辦法將我們的功能放入Thread的run方法里

//  //所以Thread的run 方法是一個(gè)空方法.如果我們想實(shí)現(xiàn)自己的功能,可以寫Thread類的子類,重寫run方法

當(dāng)我們手動(dòng)調(diào)用run的時(shí)候,他失去了任務(wù)區(qū)的功能,變成了一個(gè)普通的方法.

//當(dāng)run作為一個(gè)普通方法時(shí),內(nèi)部對應(yīng)的線程跟調(diào)用他的位置保持一致.

##  鎖的條件:

   * 1.鎖必須是對象      普通的對象/this/字節(jié)碼文件

 * 2.要被所有的線程共享

 *

 * 注意:字節(jié)碼文件的使用范圍太大,一般不建議使用.

空喚醒

##  Lock鎖

使用步驟

1.創(chuàng)建ReentrantLock lock = new ReentrantLock();對象,需要注意的是多個(gè)線程必須使用同一個(gè)

2.把之前的synchronized(鎖){ 用lock.lock()替換

3.把}  用lock.unlock();替換

好處

1.不要考慮鎖對象

2.代碼看起來更加簡潔了

3.可以使用try..catch..finaly把lock.unlock放到finaly中,好處是如果該線程發(fā)生了異常,照樣可以釋放鎖

## 比較synchronized和Lock

 * 1.synchronized:從jdk1.0就開始使用的同步方法-稱為隱式同步

  *  synchronized(鎖對象)

  *  {//獲取鎖      我們將鎖還可以稱為鎖旗艦或者監(jiān)聽器

       同步的代碼}//釋放鎖

 * 2.Lock:從jdk1.5開始使用的同步方法-稱為顯示同步

 * 原理:Lock本身是接口,要通過他的子類創(chuàng)建對象干活兒

 * 使用過程:

 * 首先調(diào)用lock()方法獲取鎖

 * 進(jìn)行同步的代碼塊兒

 * 使用unlock()方法釋放鎖

 * 使用的場景:

 * 當(dāng)進(jìn)行多生產(chǎn)者多消費(fèi)者的功能時(shí),使用Lock,其他的都使用synchronized

 * 使用效率上:Lock高于synchronized

## 多線程的單例

//餓漢式,由于公共方法中只有一行公共的代碼,所以不會(huì)產(chǎn)生線程安全問題

class SingleInstance1{

private static final SingleInstance1 s = new SingleInstance1();

private SingleInstance1() {

}

public static SingleInstance1 getInstance() {

return s;

}

}

//懶漢式,

class SingleInstance2{

private static  SingleInstance2 s = null;

private SingleInstance2() {

}

public  static SingleInstance2 getInstance() {

if (s == null) {//盡量減少線程安全代碼的判斷次數(shù),提高效率

synchronized (SingleInstance2.class) {//使用同步代碼塊兒實(shí)現(xiàn)了線程安全

if (s == null) {

s = new  SingleInstance2();

}

}

}

return s;

}

## 線程停止

1.通過一個(gè)標(biāo)識(shí)結(jié)束線程

2.調(diào)用stop方法---因?yàn)橛泄逃械陌踩珕栴},所以系統(tǒng)不建議使用.

3.調(diào)用interrupt方法----如果目標(biāo)線程等待很長時(shí)間(例如基于一個(gè)條件變量),則應(yīng)使用 interrupt 方法來中斷該等待。

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


網(wǎng)頁名稱:Java中怎么創(chuàng)建自己的線程對象
文章來源:http://weahome.cn/article/jspjee.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部