日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 并发测试main方法_java并发编程test之synchronized测试

發(fā)布時間:2023/12/9 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 并发测试main方法_java并发编程test之synchronized测试 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

synchronized關(guān)鍵字可以用于聲明方法,也可以用于聲明代碼塊;

package com.test.java;

public class SyncTest {

public static void main(String[] args) {

SynchronizedDemo1 synct1 = new SynchronizedDemo1();

SynchronizedDemo2 synct = new SynchronizedDemo2();

SynchronizedDemo2 synct2 = new SynchronizedDemo2();

Thread t = new Thread(){

@Override

public void run() {

SynchronizedDemo1.foo1();

}

};

Thread t2 = new Thread(){

@Override

public void run() {

synct1.foo2();

}

};

t.start();

t2.start();

System.out.println("-------------");

}

}

/**

* 靜態(tài)方法修飾, 全局阻塞(調(diào)用方法則阻塞)

* 在不同線程中,這個兩個方法調(diào)用時互斥的

* @author 63176

*/

class SynchronizedDemo1{

public synchronized static void foo1(){

System.out.println("foo1被執(zhí)行了");

try {

Thread.sleep(5000000l);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

System.out.println("foo1未執(zhí)行結(jié)束");

}

public synchronized static void foo2(){

System.out.println("foo2被執(zhí)行了");

try {

Thread.sleep(5000000l);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

System.out.println("foo2執(zhí)行結(jié)束");

}

}

/**

* 同一對象方法調(diào)用阻塞測試

* 針對同一個對象的多線程方法調(diào)用互斥

* @author 63176

*

*/

class SynchronizedDemo2{

public synchronized void foo1(){

System.out.println("foo1被執(zhí)行了");

try {

Thread.sleep(5000000l);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

System.out.println("foo1未執(zhí)行結(jié)束");

}

public synchronized void foo2(){

System.out.println("foo2被執(zhí)行了");

try {

Thread.sleep(5000000l);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

System.out.println("foo2執(zhí)行結(jié)束");

}

}

/**

* 塊阻塞 -

*

* @author 63176

* synchronized this時,僅鎖定當(dāng)前對象引用;

* synchronized 類時,鎖定類,與靜態(tài)方法是互斥的

*/

class SynchronizedDemo3{

public void foo1(){

synchronized (this) {

System.out.println("foo1被執(zhí)行了");

try {

Thread.sleep(5000000l);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

System.out.println("foo1未執(zhí)行結(jié)束");

}

}

public void foo2(){

synchronized (SynchronizedDemo3.class) {

System.out.println("foo2被執(zhí)行了");

try {

Thread.sleep(5000000l);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

System.out.println("foo2執(zhí)行結(jié)束");

}

}

}

當(dāng)線程進(jìn)入第一個方法時,方法處理中,則其余線程訪問對應(yīng)其他方法時,需等待第一個完成;

總結(jié)

以上是生活随笔為你收集整理的java 并发测试main方法_java并发编程test之synchronized测试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。