Java:面试必问系列:Java并发同步常用处理方法
synchronized jdk内置同步锁synchronized同步互斥锁+通知等待模式synchronized是Java中的关键字 , 是一种同步锁 。 它修饰的对象有以下几种:1)修饰一个代码块 , 被修饰的代码块称为同步语句块 , 其作用的范围是大括号{括起来的代码 , 作用的对象是调用这个代码块的对象;2)修饰一个方法 , 被修饰的方法称为同步方法 , 其作用的范围是整个方法 , 作用的对象是调用这个方法的对象;3)修改一个静态的方法 , 其作用的范围是整个静态方法 , 作用的对象是这个类的所有对象;4)修改一个类 , 其作用的范围是synchronized后面括号括起来的部分 , 作用主的对象是这个类的所有对象 。
AQS同步组件1)CountDownLatch:闭锁 , 通过计数来保证线程是否需要一直阻塞2)Semaphore:控制同一时间并发线程的数目3)CyclicBarrier:和CountDownLatch相似 , 都能阻阻塞线程4)ReentrantLock5)Condition6)Future、FutureTask
【Java:面试必问系列:Java并发同步常用处理方法】进程间同步互斥
/**
* 进程间同步(FileLock文件锁 , 同时开启多个进程实例 , 若已获得锁的实例在执行 , 则后面的进程实例均只能等待 , 当然可以使用tryLock非阻塞模式)
*/private void testFileLock() {
File lockFile = new File(System.getProperty(\"user.dir\") + File.separator + \"app.lock\");
if (!lockFile.exists()) {
try {
if (!lockFile.createNewFile()) {
System.out.printf(\"创建文件失败:\" + lockFile.getAbsolutePath());
return;
catch (IOException e) {
e.printStackTrace();
try {
FileChannel fileChannel = new FileOutputStream(lockFile).getChannel();
String jvmName = ManagementFactory.getRuntimeMXBean().getName();
System.out.printf(\"jvm ProcessName:%s 准备获取锁 ... %n\" jvmName);
FileLock lock = fileChannel.lock();//获取文件锁 for (int i = 0; i <= 100; i++) {
try {
Thread.sleep(100L);
catch (InterruptedException e) {
e.printStackTrace();
System.out.printf(\"jvm ProcessName:%s number:%d %n\" jvmName i);
lock.release();
fileChannel.close();
System.out.printf(\"jvm ProcessName:%s 处理完成 , 释放锁 %n\" jvmName);
catch (Exception e) {
e.printStackTrace();
- 『Java』java数据结构系列——什么是数据结构
- 『Java』马云:成功人跟普通人差不多,但这三点我一定要分享给所有年轻人
- 「客户端」学习网络编程,不了解TCP协议?难怪面试被刷下去,还不来学习!
- #Java#java线程到底有多少种状态?
- #智能手表#1、初识java-1
- [华为]有朋友问我“JAVA全栈”、“互联网架构师”和“JAVAEE”到底是什么?
- 「javascript」这边走Javascript了解一下
- 「华为」一篇有趣的Java class
- struts@Java面试之项目面试问题——不看面试会后悔的
- 「Java」六面蚂蚁金服,唬住了面试官要了30K;其实Java面试也没那么难