線程02

2019獨角獸企業重金招聘Python工程師標準>>> hot3.png

線程中有幾個方法需要我們區分

1 sleep方法是表示線程執行到這的時候只是暫時處于“睡眠”狀態,在這種狀態下線程是不會釋放CPU資源的,當到達休眠時間后,線程繼續“起來”干活。當線程處于sleep狀態時別的線程不可以訪問被鎖定的對象。

2 yield方法指的是該線程暫時釋放出CPU資源把CPU資源讓給其他線程,它重回就緒狀態等待CPU分配給相應的CPU時間片給它然后再執行。

3 wait方法指線程進入等待狀態,此時別的線程可以訪問被鎖定的對象,當線程處于wait狀態時,只有調用notify方法才能將線程“喚醒”讓該線程重新進入就緒狀態。

線程的同步一般有兩種一種是同步代碼塊,同步代碼塊后面有個括號,里面可以選擇是同步對象還是同步類字節碼。當你同步的方法中有static修飾的時候那么鎖的是字節碼。同步普通方法的話是當前對象,同步靜態方法的話是同步的類字節碼。靜態變量是這個類初始化的時候,靜態變量已經幫你初始化好,并且放到靜態區了,你實例化出來的對象的靜態變量都指向靜態區中的那個靜態變量的地址值。

所以當我們使用線程同步時,要明確鎖的資源,到底是鎖字節碼還是鎖對象。如果同時鎖一個資源那就是互斥了。

線程只能start一次,再次啟動時會報異常 IllegalThreadStateException。

JVM就是多線程的,主方法是個線程,垃圾回收也是個線程。

啟動多線程的話有有三種方法

1 設計一個Thread子類并重寫其run方法,實例化這個子類,并且使用這個類的start方法。

2 設計一個測試類實現runable接口,并在這個類中重寫run方法,實例化一個線程把測試類當作構造參數,來構造一個新的Thread類。

3?使用匿名類,繼承Thread,重寫run方法,直接在run方法中寫業務代碼。匿名類的一個好處是可以很方便的訪問外部的局部變量。前提是外部的局部變量需要被聲明為final。(JDK7以后就不需要了)

轉載于:https://my.oschina.net/u/3544267/blog/1383048

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/455741.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/455741.shtml
英文地址,請注明出處:http://en.pswp.cn/news/455741.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

@postconstruct注解方法沒有執行_把對象的創建交給spring來管理(注解IOC)

自動按照類型注入/** * 賬戶的業務層實現類 * * 曾經XML的配置&#xff1a; * <bean id"accountService" class"com.itheima.service.impl.AccountServiceImpl" * scope"" init-method"" destroy-method""> * <pro…

解決-ubuntu 安裝redis無法啟動

解決-ubuntu 安裝redis無法啟動 環境 Ubuntu 16.04 Port 6379 Redis version 5:4.0.9-1 1-安裝 apt install redis2-安裝完成-自啟時提示啟動服務失敗 Errors were encountered while processing:redis-serverredis E: Sub-process /usr/bin/dpkg returned an error code (1…

JavaScript中的數據類型轉換

js數據類型轉換 使用&#xff1a;Number&#xff08;&#xff09;、parseInt() 和parseFloat&#xff08;&#xff09; 做類型轉換 Number()強轉一個數值(包含整數和浮點數)。*parseInt()強轉整數&#xff0c;*parseFloat&#xff08;&#xff09;強轉浮點數函數isNaN()檢測參…

web.xml(8)_jsp-config

13.jsp-config jsp-config元素主要用來設定JSP的相關配置,<jsp:config>包含<taglib>和<jsp-property-group>兩個子元素.當中<taglib>元素 在JSP 1.2時就已經存在了;而<jsp-property-group>是JSP 2.0新增的元素. taglib :對標記庫描寫敘述符文件&…

CABAC之手把手教你編碼

首先要說明的是CABAC的生命期是SLICE,因此本篇所講的也是一個SLICE里CABAC的流程,其次對于我們來說場模式幾乎用不到,所以本文的編碼流程只使用幀模式,因此實際上用到的表只有277個, 當然如果我寫成399, 不是說里面所有表都用到的. 這里只是聲明一下這個問題, 如果大家實際操作…

python網絡攻擊代碼_Python-python網絡編程寫arp攻擊代碼

from scapy.all import ARP,send,arping import sys,re,random,time stdoutsys.stdout ip IPADDR"192.168.1.102" 網關 gateway_ip"192.168.1.1" tmp[] 偽造網關mac地址 for i in range(0,6): tmp.append(str("%02x"%random.randint(0x01,0xfe))…

Kubernetes初步學習

今天分享如題&#xff1a; Kubernetes 本篇內容源于工作項目需要自學 但K8s確實現在十分的主流so推薦給大家 最近更新緩慢由于工作太忙惹&#xff0c;忙里偷閑整理愿分享能與君共勉&#x1f4aa; 大家新年快樂&#x1f389; &#x1f508;言歸正題&#xff0c;相信很多朋友…

手機界面常見的的九宮格

手機界面常見的的九宮格 手機界面常見的的九宮格 首先布局的話需要用到一個mainactivity和一個item的布局目前用得最多也最熟悉的還是LinearLayout布局所以&#xff0c;一下也是&#xff0c;按套路就不過多贅述了。 <GridView android:layout_width"wrap_content"…

JavaScript中的運算符

js運算符 算 字 賦 比 邏 位 它算術運算符 - * / --字符串連接 賦值運算 - %比較運算符 < > > < ! !邏輯運算符 && || !位運算 ^ & | << >>其它運算符 ? : 三元運算符 delete&#xff1…

CABAC編碼

H&#xff0e;264&#xff0f;AVC標準采用了很多新技術和新方法&#xff0c;大大提高了視頻編碼效率&#xff0c;其中CABAC便是H&#xff0e;264&#xff0f;AVC采用的新型熵編碼方法之一。CABAC采用了高效的算術編碼思想&#xff0c;同時充分考慮了視頻流相關統計特性&#xf…

【教程分享】Jmeter入門教程

好&#xff01;回歸學長每周的教程分享&#xff01; PART2 >今天又來分享Jmter 因為最近好像有相關工作內容 提前準備資修一下 分享僅供參考- JMeter的作用對軟件做壓力測試 1.能夠對HTTP和FTP服務器進行壓力和性能測試&#xff0c; 也可以對任何數據庫進行同樣的測試&…

linux 特殊shell變量

特殊變量 環境變量&#xff1a; 系統本身運行需要由linux系統提前創建好的一類變量 主要用于用戶的工作環境&#xff0c;包括&#xff08;用戶的宿主目錄&#xff0c;命令的查找路徑&#xff0c;用戶的當前目錄&#xff0c;登錄的終端等&#xff09;環境變量的值由操作系統本身…

JavaScript中的循環

js循環 程序中進行有規律的重復性操作&#xff0c;需要用到循環語句。 break 和 continue 語句對循環中的代碼執行提供了更嚴格的控制。 for循環 for(var i0;i<len;i){...... }while循環 var i0;while(i<8){......i;}for-in 語句 for-in 語句是嚴格的迭代語句&…

快速傅里葉變換python_FFT快速傅里葉變換的python實現過程解析

FFT是DFT的高效算法&#xff0c;能夠將時域信號轉化到頻域上&#xff0c;下面記錄下一段用python實現的FFT代碼。 # encodingutf-8 import numpy as np import pylab as pl # 導入和matplotlib同時安裝的作圖庫pylab sampling_rate 8000 # 采樣頻率8000Hz fft_size 512 # 采樣…

rabbitmq的安裝全過程

2019獨角獸企業重金招聘Python工程師標準>>> 1 首先下載安裝依賴elang 添加yum支持 cd /usr/local/src/ mkdir rabbitmq cd rabbitmq wget http://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm rpm -Uvh erlang-solutions-1.0-1.noarch.rpm rp…

【框架學習分享】HttpRunner

今天文章分為兩部分 :) PART1 HttpRunner內容分享/ PART2 關于后廠村兒 10 Minutes HttpRunner: PART 1 首先感謝作者開源&#x1f44d; 因為最近工作需要用到HttpRunner&#xff0c; 于是便趁著周末學了下這個測試框架&#xff0c;感覺還可以~ 所以分享一下今天的學習記…

x264 移植到 ARM的方法

1。Linux下編譯X264&#xff1a; 其實在windows下使用vc已經編譯過了&#xff0c;不過聽到有人說在linux下編好了&#xff0c;我也就嘗試做一下&#xff0c;況且x264源代碼的makefile已經做好了&#xff0c;我只需要做的就是把文件copy一下&#xff0c;然后make 一下就可以了。…

JavaScript中的元素獲取與操作

js元素獲取與操作 可以使用內置對象document上的getElementById方法來獲取頁面上設置了id屬性的元素&#xff0c;獲取到的是一個html對象&#xff0c;然后將它賦值給一個變量&#xff0c;比如&#xff1a; <script type"text/javascript">var oDiv document…

VUE2第五天學習---自定義指令

閱讀目錄 1.理解VUE中的自定義指令回到頂部1.理解VUE中的自定義指令 默認核心指令有 (v-model 和 v-show), 但是有時候我們需要用到自定義指令&#xff0c;在vue中&#xff0c;代碼復用主要形式和抽象是組件&#xff0c;但是在有的情況下&#xff0c;我們仍然需要對DOM元素進行…

python報名_2019年少兒Python創意編程比賽報名時間

2019年Python創意編程比賽時間及相關規定&#xff1a;參賽對象 Python創意編程比賽設初中組和高中組。 全國各地初中、高中(含中等職業學校)在校學生均以個人名義報名參加。 參賽步驟 Python創意編程比賽分初評、復評和終評三個階段&#xff0c;初評和復評以線上形式開展&#…