互斥操作应该写在资源里,这样无论是任何线程访问这个资源,都不会产生问题,也不用每个线程都重写互斥代码
synchronized
* 可以用来修饰函数,也可用来修饰代码块
* 无论修饰什么,里面都包含一把锁对象,如果想要两个线程互斥,
* 必须保证他们在执行关键字囊括的代码时,得到的必须是同一把锁,
* 否则则不能达到互斥操作
*
* 修饰函数:
* 1、修饰静态函数:锁就是指代的当前对象this
* 2、修饰普通函数:锁就是指代的本类的字节码对象,即:类名.class
* 修饰代码块:
* 你可以传递任何对象作为锁对象,但是必须保证互斥线程间的锁是相同的,
* 非互斥线程之间的锁是不同的
// 互斥资源 class Resources{ public void print(String name){ // 锁对象为name,若是多个互斥线程传过来的name不是同一对象,则不会互斥 synchronized (name) { int len = name.length(); for(int i=0;i<len;i++){ System.out.print(name.charAt(i)); } System.out.println(); } } /** Resources r1 = new Resources() * Resources r2 = new Resources() * 锁对象为this,即当前对象,对于访问同一资源对象(r1)的多个线程,是互斥的, * 对于访问不同资源(r1和r2等)的多个线程,是不互斥的 */ public synchronized void print1(String name){ for (int i = 0; i < name.length(); i++) { System.out.print(name.charAt(i)); } System.out.println(); } // 锁对象为Resources类的字节码对象,独一无二,只此一份,所有线程执行这段代码,都会互斥 // 只要有线程访问它,都会互斥 public synchronized static void print3(String name){ for (int i = 0; i < name.length(); i++) { System.out.print(name.charAt(i)); } System.out.println(); } }
相关推荐
java synchronized的一些小实验,对帮助理解synchronized的使用有一定的帮助。
Java语言提供了专门机制以解决这种冲突,有效避免了同一个数据对象被多个线程同时访问。 需要明确的几个问题: synchronized关键字可以作为函数的修饰符,也可作为函数内的语句,也就是平时说的同步方法和同步语句...
测试java中synchronized到底锁住了什么,完整demo
javasynchronized详解.pdf
Javasynchronized机制.pdf
java synchronized关键字原理、自定义一把锁来实现同步等
Java synchronized那点事.doc
基于Java synchronized同步锁实现线程交互.pdf
"Java 中 synchronized 用法详解" Synchronized 是 Java 语言中用于解决多线程共享数据同步问题的关键字。它可以作为函数的修饰符,也可以作为函数内的语句,用于实现同步方法和同步语句块。在 Java 中,...
java锁机制Synchronized java锁机制Synchronized java锁机制Synchronized java锁机制Synchronized
java synchronized详解
java同步synchronized关键字用法示例
主要介绍了Java synchronized关键字使用方式及特性解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
你还在用synchronized?线程安全相关知识深入剖析
Java语言提供了专门机制以解决这种冲突,有效避免了同一个数据对象被多个线程同时访问。 需要明确的几个问题: synchronized关键字可以作为函数的修饰符,也可作为函数内的语句,也就是平时说的同步方法和同步语句...
由浅入深解析synchronized锁的机制,各种锁的概念的介绍,膨胀过程,基于redis的分布式锁demo。
[JAVA][synchronized的使用]
抛开前面的问题回到Java语言本身,Java语言支持多线程,而支持的核心是线程同步:即在不同线程之间协调运行和数据访问。或者准确的说,在对象没有膨胀为重量级锁之
本篇文章主要介绍了java synchronized用法详解,synchronized是Java中的关键字,是一种同步锁。有兴趣的同学可以了解一下。
主要介绍了Java Synchronized锁失败案例及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下