Java中各種常見的生命周期

Java中各種常見的生命周期

1.Spring bean的生命周期?

? 1、Spring 容器根據配置中的 bean 定義中實例化 bean。

? 2、Spring 使用依賴注入填充所有屬性,如 bean 中所定義的配置。

? 3、如果 bean 實現 BeanNameAware 接口,則工廠通過傳遞 bean 的 ID 來調用 setBeanName()。

? 4、如果 bean 實現 BeanFactoryAware 接口,工廠通過傳遞自身的實例來調用 setBeanFactory()。

? 5、如果存在與 bean 關聯的任何 BeanPostProcessors,則調用 preProcessBeforeInitialization() 方法。

? 6、如果為 bean 指定了 init 方法( 的 init-method 屬性),那么將調用它。

? 7、最后,如果存在與 bean 關聯的任何 BeanPostProcessors,則將調用 postProcessAfterInitialization() 方法。

? 8、如果 bean 實現 DisposableBean 接口,當 spring 容器關閉時,會調用 destory()。

? 9、如果為 bean 指定了 destroy 方法( 的 destroy-method 屬性),那么將調用它。

2.servlet的生命周期?

Servlet生命周期可以分成四個階段:加載和實例化、初始化、服務、銷毀。

具體如下:

  1. 當客戶第一次請求時,首先判斷是否存在Servlet對象,若不存在,則由Web容器創建對象,
  2. 而后調用init()方法對其初始化,此初始化方法在整個Servlet生命周期中只調用一次。

3. 完成Servlet對象的創建和實例化之后,Web容器會調用Servlet對象的service()方法來處理請求。

  1. 當Web容器關閉或者Servlet對象要從容器中被刪除時,會自動調用destory()方法。

3.Java中類的生命周期是什么?

? 1. 加載,查找并加載類的二進制數據,在Java堆中也創建一個java.lang.Class類的對象

? 2. 連接,連接又包含三塊內容:驗證、準備、初始化。 1)驗證,文件格式、元數據、字節碼、符號引用驗證; 2)準備,為類的靜態變量分配內存,并將其初始化為默認值; 3)解析,把類中的符號引用轉換為直接引用

  1. 初始化,為類的靜態變量賦予正確的初始值
  2. 使用,new出對象程序中使用
  3. 卸載,執行垃圾回收

4. 線程的生命周期?

? 當線程被創建并啟動以后,它既不是一啟動就進入了執行狀態,也不是一直處于執行狀態。 在線程的生命周期中,它要經過新建(New)、就緒(Runnable)、運行(Running)、阻塞 (Blocked)和死亡(Dead)5 種狀態。尤其是當線程啟動以后,它不可能一直"霸占"著 CPU 獨自 運行,所以 CPU 需要在多條線程之間切換,于是線程狀態也會多次在運行、阻塞之間切換

這5種狀態如下:

(1)新建(New):創建后尚未啟動的線程處于這種狀態

(2)運行(Runable):Runable包括了操作系統線程狀態的Running和Ready,也就是處于此狀態的線程有可能正在執行,也有可能正在等待著CPU為它分配執行時間。

(3)等待(Wating):處于這種狀態的線程不會被分配CPU執行時間。等待狀態又分為無限期等待和有限期等待,處于無限期等待的線程需要被其他線程顯示地喚醒,沒有設置Timeout參數的Object.wait()、沒有設置Timeout參數的Thread.join()方法都會使線程進入無限期等待狀態;有限期等待狀態無須等待被其他線程顯示地喚醒,在一定時間之后它們會由系統自動喚醒,Thread.sleep()、設置了Timeout參數的Object.wait()、設置了Timeout參數的Thread.join()方法都會使線程進入有限期等待狀態。

(4)阻塞(Blocked):線程被阻塞了,“阻塞狀態”與”等待狀態“的區別是:”阻塞狀態“在等待著獲取到一個排他鎖,這個時間將在另外一個線程放棄這個鎖的時候發生;而”等待狀態“則是在等待一段時間或者喚醒動作的發生。在程序等待進入同步區域的時候,線程將進入這種狀態。

(5)結束(Terminated):已終止線程的線程狀態,線程已經結束執行。

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

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

相關文章

各層作用_終于弄明白了 Singleton,Transient,Scoped 的作用域是如何實現的

一:背景1. 講故事前幾天有位朋友讓我有時間分析一下 aspnetcore 中為什么向 ServiceCollection 中注入的 Class 可以做到 Singleton,Transient,Scoped,挺有意思,這篇就來聊一聊這一話題,自從 core 中有了 S…

權限管理系統_在Gitee狂攬11K Star!這個SpringCloud的權限管理系統你必須知道

SpringCloud 大家都很熟悉了,它作為一套完整的微服務解決方案,廣受 Java 開發者們的好評, 今天就為大家介紹一款 Gitee 上的王牌項目,基于 SpringCloud 的權限管理系統——Pig。項目名稱:Pig項目作者:pig4c…

導出排除的表_excel拆分實例:如何快速制作考勤統計分析表

編按:面對新的統計需求,很多人會一下變懵,不知如何辦。如果涉及的統計有一千多行數據,哭的心思都有了:什么時候才能下班喲!今天老菜鳥通過考勤統計分析表實例分享自己面對新統計需求的解決方法:…

rds 如何學習數據庫_如何將本地數據庫遷移到云數據庫 RDS 上?

使用數據傳輸服務 ( DTS ) 將本地數據庫遷移到 阿里云的云數據庫 RDS ,可以實現應用不停服務的情況下,平滑完成數據庫的遷移工作。接下來我們將學習下如何使用 DTS 將本地數據庫遷移到 RDS 上。背景DTS 支持 SQL Server 數據結構遷移和全量遷移。DTS 支持…

arm ida 偽代碼 安卓 符號表_IDA 制作 sig文件 gdb 導入符號表

背景最近比賽遇到了一個題目, 32位靜態鏈接去符號了. 所以用IDA分析的時候很多libc的庫函數都無法識別, 就需要在 IDA 中引入 sig 文件. 從而可以識別諸如 read, write, malloc, free 這些庫函數. 雖然網上已經有很多制作好的sig文件, 但是還是應該學會自己制作sig文件以備不時…

lua如何打印行號_LUA教程錯誤信息和回跟蹤(Tracebacks)-34

雖然你可以使用任何類型的值作為錯誤信息,通常情況下,我們使用字符串來描述遇到的錯誤。如果遇到內部錯誤(比如對一個非table的值使用索引下標訪問)Lua將自己產生錯誤信息,否則Lua使用傳遞給error函數的參數作為錯誤信息。不管在什么情況下&a…

python 套接字 struck_Python socket粘包問題(最終解決辦法)

套接字:就是將傳輸層以下的協議封裝成子接口對于應用程序來說只需調用套接字的接口,寫出的程序自然是遵循tcp或udp協議的實現第一個功能個:實現:通過客戶端向服務端發送命令,調取windows下面的cmd窗口,將服…

python的lib文件夾_python遍歷文件夾os.path與pathlib

首先我們來一個需求,這個函數接受文件夾的名稱作為輸入參數,返回該文件夾中文件的路徑,以及其包含文件夾中文件的路徑。def print_dir_contents(sPath):import osfor sChild in os.listdir(sPath):sChildPath os.path.join(sPath,sChild)if …

python 數據字典用法_python數據字典的操作

一、什么是字典?字典是Python語言中唯一的映射類型。映射類型對象里哈希值(鍵,key)和指向的對象(值,value)是一對多的的關系,通常被認為是可變的哈希表。字典對象是可變的,它是一個容器類型,能存儲任意個數…

雙系統安裝deepin20_win10deepin15.10雙系統安裝教程

第二步:下載深度啟動盤制作工具深度啟動盤制作工具地址第三步:制作U盤啟動盤打開第二部下載的啟動盤制作工具,并準備一個u盤插入待裝系統的電腦,選擇鏡像文件后,下一步選擇磁盤并勾選格式化磁盤,點下一步開…

ubuntu19 安裝git_在Ubuntu 18.04上安裝Git

步驟1.首先,通過運行以下命令確保您的系統和apt包列表完全更新:apt-get update -yapt-get upgrade -y第2步。在Ubuntu 18.04上安裝Git。現在讓我們安裝git:apt install git您可以使用以下命令來檢查已安裝的git版本:$ git --versi…

mysql更新多條數據6_mysql語句:批量更新多條記錄的不同值

mysql更新語句很簡單,更新一條數據的某個字段,一般這樣寫:如果更新同一字段為同一個值,mysql也很簡單,修改下where即可:這里注意 ‘other_values’ 是一個逗號(,)分隔的字符串,如&am…

php mysql query 行數_如何在PHP中獲取MYSQL數據庫返回的數據的行數?

展開全部1. mysql_num_rows 可得到e69da5e887aa3231313335323631343130323136353331333337383861查詢記錄數<?php $con mysql_connect("localhost", "hello", "321");if (!$con){die(Could not connect: . mysql_error());}$db_selected …

mysql數據庫開發環境_MacOS下搭載開發環境之數據庫篇(Mysql + Navicat)

一、安裝Mysql1、官網下載mysql的tar包(提示&#xff1a;建議vpn環境下載)2、解壓并安裝tar包# 移動解壓后的二進制包到安裝目錄sudo mv mysql-5.7.19-osx10.9-x86_64 /usr/local/mysql# 更改 mysql 安裝目錄所屬用戶與用戶組cd /usr/localsudo chown -R root:wheel mysql# 初始…

mysql alter 唯一鍵_MySQL列屬性 之 唯一鍵

MySQL列屬性 之 唯一鍵唯一鍵唯一鍵&#xff1a;每張表往往有多個字段需要具有唯一性&#xff0c;數據不能重復&#xff0c;但是在每張表中&#xff0c;只能有一個主鍵&#xff0c;因此 唯一鍵就是用來解決表中多個字段需要具有唯一性的問題。例如身份證號碼應該每一行的記錄不…

如何在mysql中添加復選框_如何使用輸入和復選框更新mysql

如果我理解正確,您需要這樣做:mysql_query("UPDATE mp3SETaktif 1,baslik " . mysql_escape_string($_POST[baslik]) ."WHERE id $zuha");mysql_query("update mp3 set aktif 1,baslik $_POST[baslik]where id $_POST[id]")現在唯一的區別…

mysql 檢查列是否存在,如何檢查mysql表列是否存在?

How can I check if mysql table field even exists ?The column name is price and I need to see if it exists.Havent understood really how the EXISTS works...Any examples or ideas ?Thanks解決方案In PHP:$fields mysql_list_fields(database_name, table_name);$c…

mysql proxy yum_mysql 高可用架構 proxysql 之一 yum安裝

os:centos 7.4mysql: 5.7proxysql: 1.4.10ip 規劃如下&#xff1a;192.168.56.101 node1 (proxysql)192.168.56.102 node2 (mysql master)192.168.56.103 node3 (mysql slave)192.168.56.104 node4 (mysql slave)安裝mysql 5.7node2、node3、node4 安裝 mysql 5.7 software詳細…

wpf 使用位圖畫圖為什么斷斷續續_WPF的未來是微軟WinUi!

WPF(Windows Presentation Foundation)是微軟推出的基于Windows 的用戶界面框架&#xff0c;屬于.NET Framework 3.0的一部分。它提供了統一的編程模型、語言和框架&#xff0c;真正做到了分離界面設計人員與開發人員的工作&#xff1b;同時它提供了全新的多媒體交互用戶圖形界…

antd新增一行頁碼不正確_antd-Table@4.x對rowKey屬性的重構

時間&#xff1a;2020/04/26 &#xff0c;轉載請注明出處。寫在前面antd團隊于2020年2月發布了醞釀已久的antd4.0版本&#xff0c;對樣式的調整、部分組件邏輯的重構都進行了較大改動&#xff0c;本文針對Table的rowKey屬性重構作分析。由一個mistake帶來的思考在數據治理模塊的…