多執行緒小問題

2021-09-25 06:51:41 字數 975 閱讀 7652

1、被禁用的一些操作多執行緒的方法:

停止多執行緒:public void stop();

銷毀多執行緒:public void destroy();

掛起執行緒:public final void suspend();

恢復掛起:public final void resume();

被廢除的主要原因在於這些方法可能會導致執行緒的死鎖。

2、優雅地停止執行緒

將執行緒物件要執行的操作放在while()迴圈體中,設定判斷條件flag,當希望執行緒停止時,讓flag=false.

3、守護執行緒

在thread類中提供的守護執行緒的操作方法:

設定為守護執行緒:public final void setdaemon(boolean on);

判斷是否為守護執行緒:public final boolean isdaemon();

設定某執行緒為守護執行緒:daemonthread.setddemon(true);守護執行緒是圍繞使用者執行緒的,程式執行完畢,守護執行緒消失。在整個jvm中,最大的守護執行緒就是gc執行緒。程式執行中gc執行緒會一直存在,當程式執行完畢,gc執行緒消失。

4、volatile關鍵字

在多執行緒的定義中,volatile關鍵字主要是在屬性定義上使用,表示此屬性為直接資料操作,而不進行副本的拷貝處理。在正常進行變數處理的時候往往會經歷如下幾個步驟:

獲取變數原有的資料內容副本-》利用副本為變數進行數學計算-》將計算後的變數儲存到原始空間之中

如果在屬性定義上追加volatile關鍵字,表示不使用副本,直接操作原始變數,相當於節約了拷貝副本、重新儲存的步驟(時間)。

【重要】解釋volatile與synchronized的區別:

volatile主要在屬性上使用,而synchronized是在**塊與方法上使用的;

volatile無法描述同步的處理,它只是一種直接記憶體的處理,避免了副本的操作,而synchronized是實現同步的。

多執行緒的一些小問題集錦

測試執行緒是否已經死亡,可以呼叫isalive 方法.當執行緒處於就緒 執行 阻塞三種狀態時,返回true 當執行緒處於死亡 新建狀態時返回false。例項 如下 package com.thread public class startdead extends thread public stat...

執行緒的小問題

看乙個問題,匿名內部類和重寫的問題 public class test01 start 結果應該是什麼呢?先不看上面的 下面的 結果是什麼?public class test01 start 不難看出,和結果應該是輸出繼承了thread類的匿名物件鎖重寫的run方法的結果 test 那麼我們再回過頭...

關於多執行緒的幾個問題(面試小問題,Java篇)

面試官想考考我多執行緒方面的問題。1 請說下執行緒與程序的關係。答 作業系統 中是這樣說的 1 乙個執行緒只能屬於乙個程序,而乙個程序可以有多個執行緒,但至少有乙個執行緒。執行緒是作業系統可識別的最小執行和排程單位。2 資源分配給程序,同一程序的所有執行緒共享該程序的所有資源。同一程序中的多個執行緒...