多線程中匿名內部類不可訪問main中定義的局部變量,要用final修飾變量

原因:局部變量的生命週期與局部內部類的對象的生命週期的不一樣

分析:匿名內部類中引用的外部變量受到外部線程的制約有其特定的生命週期,當外部的變量生命週期已經完結之後,內部類的線程還在運行。但它已經結束週期不可使用了。

​ 如何解決這個外部變量生命週期已經結束而在內部類卻還需要使用,就需要在外部變量中添加final修飾符,讓它成爲不可變的常量,不可變後其實內部類訪問外部變量的本質是基於複製的,使用的這個變量就是外部變量的一個複製品,不會產生不一致問題,即使外部變量生命週期已經結束,內部的複製品依然可用。

​ 遇到了這個問題,網上查詢總結了一下。有不對還希望解釋一下

這裏是Yhh–一個初學Java的小菜雞

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章