java 多執行緒控制執行緒執行順序
之前遇到過這個問題,直接上程式碼記錄下:
public class RunableTest implements Runnable { volatile int target="A".codePointAt(0); static int minOrder="A".codePointAt(0); static int maxOrder="C".codePointAt(0); @Override public void run() { synchronized (this){ int order=Thread.currentThread().getName().codePointAt(0); for (int i=0;i<10;i++){ while (target!=order){ try{ wait(); }catch (Exception ex){ } } System.out.println(Thread.currentThread().getName()); target=order+1; if(target>maxOrder){ target=minOrder; } notifyAll(); } } } }
public class TestMain { public static void main(String[] args){ Runnable runnable=new RunableTest(); Thread threadA=new Thread(runnable,"A"); Thread threadB=new Thread(runnable,"B"); Thread threadC=new Thread(runnable,"C"); threadA.start(); threadB.start(); threadC.start(); } }
執行結果
A
B
C
A
B
C
A
B
C
A
B
C
A
B
C
A
B
C
A
B
C
A
B
C
A
B
C
A
B
C
相關推薦
多執行緒-執行緒控制之休眠執行緒
package cn.itcast_04; import java.util.Date; public class ThreadSleep extends Thread { @Override
一個執行緒控制另一個執行緒的暫停或啟動
MainTest類中可以控制執行緒的暫停或繼續執行。 public class MainTest { /** * 這個執行緒操作另一個執行緒的暫停或開始 * @param args */ public static void main(String[] args) {
RT-Thread 讀後感2——建立執行緒(定義執行緒的棧,定義執行緒函式,定義執行緒控制塊,執行緒初始化函式)
1. 定義執行緒的棧 多執行緒作業系統中,每個執行緒都是獨立的,互不干擾,所以要為每個執行緒分配獨立的棧空間,這個棧空間通常是一個預先定義好的全域性陣列, 也可以是動態分配的一段記憶體空間,但它們都存在於 RAM 中。定義兩個執行緒棧如下: // 定義執行緒棧 大小設定為512 rt_ui
用一個執行緒控制一個事務執行
1.專案啟動會執行該執行緒,然後這個執行緒控制執行一個事務 1.專案用的struts2+spring 再web.xml新增監聽 <listener><listener-class>cn.cntomorrow.jzsh.timerThe
工作流4-流程例項,任務,執行物件控制流程的執行
流程例項: 從開始到結束 流程物件: 一個流程,流程例項只有一個,執行物件可以存在多個 1.啟動流程例項 public void startProcessInstance(){ //流程定義的key,根據key啟動最新version流程 String pr
【Activiti工作流】8.流程例項,任務,執行物件控制流程的執行
我們之前講過了流程的定義,啟動,檢視和刪除,以及升級版本,接下來當流程 正式啟動成功之後,我們就要學習流程例項/任務的執行了。 1,流程例項/任務的執行 (1)啟動流程例項 (這裡前提是大家部署好了流程)/** * 啟動流程 * 當流程到達一個節點時,會在act_ru_
Java筆記-多執行緒之執行緒控制
執行緒控制 我們已經知道了執行緒的排程,接下來我們就可以使用如下方法物件執行緒進行控制。 1.執行緒休眠 public static void sleep(long millis):讓當前執行緒處於暫停狀態,millis引數毫秒值,即暫停時間。 程式
JAVA多執行緒的控制JAVA 5.0--Executor
JAVA多執行緒的控制JAVA 5.0 2010-09-20 10:48 在Java 5.0之前啟動一個任務是通過呼叫Thread類的start()方法來實現的,任務的提於交和執行
Java多執行緒(二)、執行緒的生命週期和狀態控制
、執行緒的生命週期 執行緒狀態轉換圖: 1、新建狀態 用new關鍵字和Thread類或其子類建立一個執行緒物件後,該執行緒物件就處於新生狀態。處於新生狀態的執行緒有自己的記憶體空間,通過呼叫start方法進入就緒狀態(runnable)。 注意:不能對已經啟動的
Java 多執行緒設定執行緒超時時間之 Callable介面和Future介面 超時控制
Callable介面和Future介面介紹 在Java中,如果需要設定程式碼執行的最長時間,即超時,可以用Java執行緒池ExecutorService類配合Future介面來實現。 Future介面是Java標準API的一部分,在java.uti
java 多執行緒控制執行緒執行順序
之前遇到過這個問題,直接上程式碼記錄下: public class RunableTest implements Runnable { volatile int target="A".codePointAt(0); static int minOrder=
java多執行緒的共享變數訪問控制例項
最近打算去一家電商公司,對於高併發的資料訪問控制有著嚴格的要求,近期打算把多執行緒的知識在好好補一下。 執行緒排程有五個狀態; 開始,可執行,執行,阻塞,死亡。 啟動執行緒有兩種方法。繼承Thread類或則實現Runnable介面,其實Thread類也實現
(java多執行緒併發)控制併發執行緒數的Semaphore
1.簡介 訊號量(Semaphore),有時被稱為訊號燈,是在多執行緒環境下使用的一種設施, 它負責協調各個執行緒, 以保證它們能夠正確、合理的使用公共資源。 2.概念 Semaph
Java多執行緒suspend、sleep的控制鎖的釋放的區別
因為馬上畢業了,最近一直在複習Java的基礎知識,多執行緒當然是重點了,今天上午一直在看執行緒的生命階段,其中有過時的方法suspend用來掛起一個執行緒。而關於該方法為何被拋棄了,看了開發文件中是這麼描述的:【方法已經遭到反對,因為它具有固有的死鎖傾向。
Java多執行緒、執行緒的生命週期和狀態控制
一、執行緒的生命週期 執行緒狀態轉換圖: 1、新建狀態 用new關鍵字和Thread類或其子類建立一個執行緒物件後,該執行緒物件就處於新生狀態。處於新生狀態的執行緒有自己的記憶體空間,通過呼叫start方法進入就緒狀態(runnable)。 注意:不能對已經啟動的執行緒再次呼叫star
Windbg除錯----多執行緒控制除錯
在除錯程式的時候,可能經常會有這樣的需求,讓一個執行緒在特定的時候才讓其開始執行或者暫停執行。比如複雜的多執行緒導致死鎖的問題,又或者多執行緒中的Race Condition 導致程式執行異常等。 很多時候,我們可以藉助編寫除錯程式碼來達到多執行緒的除錯,可是有些情況下除錯的執行粒度是指
Java多執行緒實現電影院售票案例
某電影院目前正在上映賀歲大片,共有100張票,而它有3個售票視窗,請設計一個程式模擬該電影院售票。 定義Sell類實現Runnable介面,很好的解決了單繼承共享資源問題 public class Sell implements Runnable { // 定義100張票,三個售票
java多執行緒物件鎖、類鎖、同步機制詳解
1.在java多執行緒程式設計中物件鎖、類鎖、同步機制synchronized詳解: 物件鎖:在java中每個物件都有一個唯一的鎖,物件鎖用於物件例項方法或者一個物件例項上面的。 類鎖:是用於一個類靜態方法或者class物件的,一個
Java 多執行緒實現死鎖場景
簡述: 《Java 程式設計思想》 P718 ~ P722 模擬死鎖的場景, 三個人 三根筷子,每個人需要拿到身邊的兩根筷子才能開始吃飯 出現死鎖的場景是,三個人都拿到了右邊的筷子,但是由於筷子都被搶佔,均無法獲得左邊的筷子 Chopstick.java
Java 多執行緒 join和interrupt 方法
簡述: 使用Java多執行緒中join和interrupt函式 《Java程式設計思想》 P669 ~ P670 一個執行緒可以再其他執行緒上呼叫join()方法,其效果是等待一段時間直到第二個執行緒結束才繼續執行。 如果某個執行緒在另一個執行緒t上呼叫t.join(), 此