这几天一直在研究多线程的东西,对于synchronized又有了另一份理解。
看代码:
public class AtomicIntegerTest2 { static Object o = new Object();//同步锁对象 public static int count = 0; public static void main(String[] args) throws InterruptedException { for (int i = 0; i < 10; i++) { new MyThread().start(); } } } class MyThread extends Thread{ String str ="000";//同步锁对象,可以同步 String str2 =new String();//同步锁对象,不可同步 Integer it = 0;//同步锁对象,可以同步 Integer it2 = new Integer(0);//同步锁对象,不可同步 @Override public void run() { //this:无法同步,因为this指的就是MyThread的实例,主线程每次都是new新的所以无法同步 //str字符串类型,一旦声明地址无法改变 但是只能是String Str = "123"这样声明。这个是可以同步的 //String str =new String(); 这种声明无法同步,因为每次都会有个新的string对象产生 //所以得出同步对象必须满足在线程体当中对象地址不能改变,只要满足这个条件就可以当做同步对象,例如:静态对象,字符串常量等。 synchronized (it) { for (int j = 0; j < 10; j++) { str+= "123";//虽然字符串的内容变化了,但是str="000"地址始终存在,所以可以同步 it ++;//整型对象改变 AtomicIntegerTest2.count++; System.out.println(Thread.currentThread().getName()+"值:"+AtomicIntegerTest2.count); } } } }
运算结果也是同步的
相关推荐
Java synchronized 详解 Java 中的同步机制是多线程编程中最重要的概念之一。它允许开发者控制多个线程对共享资源的访问,以避免数据不一致和race condition。这篇文章将详细介绍 Java 中的 synchronized 机制,...
并发synchronized详解 在 Java 中,synchronized 是一种非常重要的关键字,用于解决多线程编程中的线程安全问题。线程安全问题是指多个线程同时访问同一个共享、可变资源时可能出现的错误或不一致情况。为了解决这...
"Java 多线程与并发(4-26)-关键字- synchronized详解" Java 多线程与并发中的 synchronized 关键字是实现同步块的互斥访问和线程的阻塞及唤醒等工作的重要工具。下面将对 synchronized 关键字进行详细分析。 ...
### JAVA synchronized详解 在Java编程语言中,`synchronized`是一个非常重要的关键字,它主要用于实现同步控制机制。通过使用`synchronized`,可以确保同一时刻只有一个线程能够访问被标记为同步的方法或代码块,...
### Java synchronized 关键字详解 #### 一、synchronized关键字简介 `synchronized`是Java语言提供的关键字之一,用于实现线程间的同步控制。通过在方法或代码块上使用`synchronized`,可以确保同一时间只有一个...
Java中的关键字synchronized 详解 Java中的关键字synchronized是Java语言中用于线程同步的关键字。它可以修饰方法或代码块,以便在多线程环境中保护共享资源的安全。 1、修饰普通方法 synchronized关键字可以修饰...
java synchronized详解
Java中的`synchronized`关键字是实现线程同步的关键机制,它保证了在多线程环境下,对共享资源的访问是互斥的,防止了数据竞争和不一致的问题。synchronized通过锁的概念来控制对代码块或方法的访问,分为两种形式:...
Java中的`synchronized`关键字是用于实现线程同步的重要机制,它的主要目的是确保在多线程环境中,对于共享资源的访问能够保持线程安全。当`synchronized`关键字应用于方法或代码块时,它提供了互斥访问,即在任意...
Java中的`synchronized`关键字是多线程编程中的一个重要概念,用于控制并发访问共享资源,以保证数据的一致性和完整性。本文将深入解析`synchronized`在Java中的应用和工作原理。 一、`synchronized`的基本用法 `...
Java中的`synchronized`关键字是用来解决多线程环境下的并发访问问题,确保共享资源在同一时间只能被一个线程访问,从而避免数据的不一致性。在Java中,`synchronized`可以应用于方法或者代码块,实现线程同步。 1....
### synchronized关键字的深入解析 #### 一、synchronized关键字的重要性 `synchronized`关键字在Java语言中扮演着极其重要的角色,它是实现线程安全的核心手段之一。通过`synchronized`关键字,开发人员可以在多...
首先来回顾一下synchronized的基本使用: synchronized代码块,被修饰的代码成为同步语句块,其作用的范围是调用这个代码块的对象,我们在用synchronized关键字的时候,能缩小代码段的范围就尽量缩小,能在代码段上...
5-4JVM内置锁synchronized关键字详解.mp4
Java中的同步锁,即`synchronized`关键字,是Java多线程编程中用于解决并发问题的重要机制。它确保了对共享资源的互斥访问,防止数据的不一致性。当我们有多线程环境并涉及到共享数据时,可能会出现竞态条件,就像...
Synchronized详解** 3.1 使用 synchronized用于修饰实例方法、静态方法或代码块,实现线程同步。 3.2 原理分析 涉及 Monitor 概念,线程获取和释放锁的过程。 3.3 JVM中锁的优化 包括轻量级锁、偏向锁和重量级锁等...