欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺析Java多線程同步synchronized

 更新時(shí)間:2018年02月28日 08:50:41   作者:彬菌  
本篇文章給大家詳細(xì)分析了Java多線程同步synchronized的相關(guān)知識點(diǎn),需要的讀者們可以參考學(xué)習(xí)下。

單線程是安全的,因?yàn)榫€程只有一個(gè),不存在多個(gè)線程搶奪同一個(gè)資源

代碼例子:

public class SingleThread {
	int num=10;
	public void add(){
		while(num<13){
			num++;
			try{
				Thread.sleep(1000);
			}
			catch(Exception e){
				System.out.println("中斷");
			}
			System.out.println(num);
		}
	}
	public static void main(String[] args){
		Thread thread = Thread.currentThread(); //獲取當(dāng)前運(yùn)行的線程對象
		thread.setName("單線程"); //線程重命名
		System.out.println(thread.getName()+"正在運(yùn)行");
		SingleThread st=new SingleThread();
		st.add();
	}
}

多線程安全,synchronized同步代碼塊

synchronized(對象){}; //同步代碼塊

synchronized 返回值 方法名(){}; //同步方法

class One {
	 int num=10;
	 public void add(){ 
		synchronized(this){ //同步代碼塊,同步方法也可以實(shí)現(xiàn)效果synchronized void add(){};
		num++;
	  try {
	   Thread.sleep(1000);
	  } catch (InterruptedException e) {
	  	System.out.println("中斷");
	  }
	  System.out.println(num);
	  }
	 }
	}
	class Two implements Runnable{
	 One one = new One();
	 @Override
	 public void run() {
		 one.add(); //調(diào)用add方法
	 }
	}
	public class Synch{
	 public static void main(String[] args) {
		Two two = new Two();
	  Thread t1 = new Thread(two); //創(chuàng)建三個(gè)子線程
	  Thread t2 = new Thread(two);
	  Thread t3 = new Thread(two);
	  t1.start();
	  t2.start();
	  t3.start();
	 }
}

注意:觀察去除synchronized關(guān)鍵字的運(yùn)行結(jié)果區(qū)別!

正常運(yùn)行結(jié)果:

11
12
13

相關(guān)文章

  • Spring Boot基于Active MQ實(shí)現(xiàn)整合JMS

    Spring Boot基于Active MQ實(shí)現(xiàn)整合JMS

    這篇文章主要介紹了Spring Boot基于Active MQ實(shí)現(xiàn)整合JMS,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • SpringBoot項(xiàng)目優(yōu)雅的全局異常處理方式(全網(wǎng)最新)

    SpringBoot項(xiàng)目優(yōu)雅的全局異常處理方式(全網(wǎng)最新)

    這篇文章主要介紹了SpringBoot項(xiàng)目優(yōu)雅的全局異常處理方式(全網(wǎng)最新),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 通過實(shí)例解析spring對象生命周期

    通過實(shí)例解析spring對象生命周期

    這篇文章主要介紹了通過實(shí)例解析spring對象生命周期,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Spring如何使用xml創(chuàng)建bean對象

    Spring如何使用xml創(chuàng)建bean對象

    這篇文章主要介紹了Spring如何使用xml創(chuàng)建bean對象,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • jmeter壓力測試工具簡介_動力節(jié)點(diǎn)Java學(xué)院整理

    jmeter壓力測試工具簡介_動力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要為大家詳細(xì)介紹了jmeter壓力測試工具相關(guān)介紹資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • 在SpringBoot中集成H2數(shù)據(jù)庫的完整指南

    在SpringBoot中集成H2數(shù)據(jù)庫的完整指南

    Spring Boot是一個(gè)簡化企業(yè)級Java應(yīng)用程序開發(fā)的強(qiáng)大框架,H2數(shù)據(jù)庫是一個(gè)輕量級的、開源的SQL數(shù)據(jù)庫,非常適合用于開發(fā)和測試,本文將指導(dǎo)您如何在Spring Boot應(yīng)用程序中集成H2數(shù)據(jù)庫,并探索一些高級配置選項(xiàng),需要的朋友可以參考下
    2024-10-10
  • Java中隊(duì)列Queue和Deque的區(qū)別與代碼實(shí)例

    Java中隊(duì)列Queue和Deque的區(qū)別與代碼實(shí)例

    學(xué)過數(shù)據(jù)結(jié)構(gòu)的,一定對隊(duì)列不陌生,java也實(shí)現(xiàn)了隊(duì)列,下面這篇文章主要給大家介紹了關(guān)于Java中隊(duì)列Queue和Deque區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • mybatis注解之@Mapper和@MapperScan的使用

    mybatis注解之@Mapper和@MapperScan的使用

    這篇文章主要介紹了mybatis注解之@Mapper和@MapperScan的使用,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Java Lombok簡介、使用、工作原理、優(yōu)缺點(diǎn)

    Java Lombok簡介、使用、工作原理、優(yōu)缺點(diǎn)

    這篇文章主要介紹了Java Lombok簡介、使用、工作原理、優(yōu)缺點(diǎn)的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用Java Lombok,感興趣的朋友可以了解下
    2021-03-03
  • maven安裝、使用、配置本地倉庫、idea配置maven以及解決plugins報(bào)錯(cuò)問題

    maven安裝、使用、配置本地倉庫、idea配置maven以及解決plugins報(bào)錯(cuò)問題

    本地倉庫是遠(yuǎn)程倉庫的一個(gè)緩沖和子集,當(dāng)你構(gòu)建Maven項(xiàng)目時(shí)首先會從本地倉庫查找資源,如果沒有那么Maven會從遠(yuǎn)程倉庫下載到你本地倉庫,這篇文章主要給大家介紹了關(guān)于maven安裝、使用、配置本地倉庫、idea配置maven以及解決plugins報(bào)錯(cuò)問題的相關(guān)資料,需要的朋友可以參考下
    2024-01-01

最新評論