記一道多執行緒題目 二

2021-09-25 15:02:28 字數 2602 閱讀 9763

/**

* @author linxu

* @date 2019

* tips:

* 1、交替列印,根據構造器構造的n,構造乙個交替任務執行器。

* 2、假如n=1,則列印12,假如n=2.則列印1212。

* 3、效率第一,可有多種解法,適當加分。

*/static

class

printordered

public

void

one(

)throws interruptedexception

}public

void

two(

)throws interruptedexception }}

//main方法內容不允許修改

public

static

void

main

(string[

] args)

throws interruptedexception

catch

(interruptedexception e)};

runnable r2 =()

->

catch

(interruptedexception e)};

thread t=

newthread

(r1)

; thread t1=

newthread

(r2)

;//keep sync

thread.

sleep

(100);

//start

t.start()

; t1.

start()

;}

//使用自旋解法,可以採用volatile加速自旋解鎖速度。

static

class

printordered

public

void

one(

)throws interruptedexception

system.out.

print

("1");

flag=

false;}

}public

void

two(

)throws interruptedexception

system.out.

print

("2");

flag=

true;}

}}

//使用阻塞佇列解法。

static

class

printordered

public

void

one(

)throws interruptedexception

}public

void

two(

)throws interruptedexception

}}

//重入鎖解法  

static

class

printordered

public

void

one(

)throws interruptedexception

system.out.

print

("1");

flag++

; condition2.

signal()

;}finally

// twoqueue.put(i);}}

public

void

two(

)throws interruptedexception

system.out.

print

("2");

flag--

; condition1.

signal()

;}finally

// onequeue.put(i);}}

}public

static

void

main

(string[

] args)

throws interruptedexception

catch

(interruptedexception e)};

runnable r2 =()

->

catch

(interruptedexception e)};

thread t=

newthread

(r1)

; thread t1=

newthread

(r2)

;//keep sync

thread.

sleep

(100);

//start

t.start()

; t1.

start()

;}

關於多執行緒的一道題目

題目大意 有四個執行緒,每個執行緒輸出1,2,3,4,設計程式使得依次輸出 1111222233334444 求解思路 建立乙個物件o,當四個執行緒依次輸出1後,檢測已經輸出的次數count,如果輸出次數為1,2,3,那麼讓執行緒進入物件o的等待集,如果為4,那麼喚醒o中等待集中所有執行緒並將cou...

一道this的題目

請問下面 中的this值指向的是全域性物件還是物件o?function f return c var o new f console.log o.constructor.name object這裡的this指向全域性物件,因為 c call without new。這裡用正常的方式呼叫的函式 c 所...

一道題目 intel

從序列中找四個四字子串形成十進位制數使之乘積最大 就是求四個最大的?我目前只想到如下辦法。這個題並不是關於複雜的演算法,其本意是要利用並行處理,但目前尚未考慮到 除了其中比較求最小值部分有希望用simd include int g teststring int main void int picke...