`
lovezzy
  • 浏览: 79098 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java synchronized(同步处理并发)

    博客分类:
  • java
阅读更多
package test;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

public class ThreadTest {

	private static ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(2);
	
	private List<String> strs = new ArrayList<String>();
	
	// 当 excutor 调度 C2 的时候,将触发addStr方法,这个时候应为设置了同步,所以底边的getStr方法将不能被执行,除非addStr执行完毕才把控制权交给getStr
	// synchronized方法标示和域标示synchronized (blockObj) 效果一样
	public synchronized void addStr(String str) {
		//synchronized (strs) {
			try {
				strs.add(str);
				Thread.sleep(4000);
				System.out.println("--");
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		//}
	}
	
	public synchronized String getStr() {
		//synchronized (strs) {
			return strs.get(strs.size() - 1);
		//}
	}
	
	class C1 implements Runnable {

		@Override
		public void run() {
			System.out.println("-C!-");
			System.out.println(getStr());
		}
		
	}
	
	class C2 implements Runnable {

		@Override
		public void run() {
			addStr(Long.toString(System.currentTimeMillis()));
		}
		
	}
	
	public void check() {
		executor.schedule(new C2(), 1, TimeUnit.SECONDS);
		executor.schedule(new C1(), 2, TimeUnit.SECONDS);
	}
	
	public static void main(String[] args) {
		ThreadTest tt = new ThreadTest();
		tt.check();
	}

}
 
分享到:
评论

相关推荐

    【Java】synchronized同步锁详解

    synchronized同步锁(悲观锁)2.1 synchronized 作用范围2.2 synchronized 核心组件2.3 synchronized 实现 1. Java锁的种类 1.1 乐观锁 乐观锁是一种乐观思想,即认为读多写少,遇到并发写的可能性低。 每次去拿...

    32.线程的同步机制-synchronized同步语句-解决synchronized方法无限等待问题.mp4

    在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。

    java Thread & synchronized & concurrent 线程、同步、并发

    NULL 博文链接:https://wuaner.iteye.com/blog/998696

    Java 7并发编程实战手册

    2.2 使用synchronized实现同步方法 42 2.3 使用非依赖属性实现同步 47 2.4 在同步代码中使用条件 53 2.5 使用锁实现同步 57 2.6 使用读写锁实现同步数据访问 61 2.7 修改锁的公平性 65 2.8 在锁...

    java并发编程

    , 这里,读者将通过使用java.lang.thread类、synchronized和volatile关键字,以及wait、notify和notifyall方法,学习如何初始化、控制和协调并发操作。此外,本书还提供了有关并发编程的全方位的详细内容,例如限制...

    Java-并发(Concurrent)编程

    同步代码块Synchronized及其实现原理 volatile关键字及其实现原理 多线程在JVM中的实现原理 JUC概述 原子类Atomic-CAS及其实现原理 锁Lock-AQS核心原理剖析 并发工具类、并发容器、阻塞队列 线程池原理剖析 线程池...

    详解Java利用同步块synchronized()保证并发安全

    主要介绍了Java利用同步块synchronized()保证并发安全,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    java关键字Synchronized详解

    ava中的关键字synchronized是一种用于实现线程同步的机制。它可以确保在同一时刻,只有一个线程能够访问被synchronized修饰的代码块或方法。这种机制可以有效地避免多线程环境下的数据竞争和不一致问题。 在Java中...

    java高并发相关知识点.docx

    线程安全:Java中的线程安全,包括同步方法和同步块等。 死锁:Java中的死锁,包括如何避免死锁和如何解除死锁。 性能优化:Java中的性能优化,包括JVM参数调优、代码优化、使用并发框架等。 并行计算:Java中的并行...

    龙果java并发编程完整视频

    第46节同步容器与并发容器00:18:44分钟 | 第47节并发容器CopyOnWriteArrayList原理与使用00:15:52分钟 | 第48节并发容器ConcurrentLinkedQueue原理与使用00:31:03分钟 | 第49节Java中的阻塞队列原理与使用00:26:...

    Java并发编程基础.pdf

    线程同步与通信:掌握Java中的同步机制,如synchronized关键字、wait()和notify()方法,以及更高级的并发工具如ReentrantLock、Condition等。了解线程间的通信方式,如共享内存、消息传递等。 并发集合:熟悉Java...

    Java并发编程:设计原则与模式(第二版)

    读者将通过使用java.lang.thread类、synchronized和volatile关键字,以及wait、notify和notifyall方法,学习如何初始化、控制和协调并发操作。此外,本书还提供了有关并发编程的全方位的详细内容,例如限制和同步、...

    Java并发编程原理与实战

    同步容器与并发容器.mp4 并发容器CopyOnWriteArrayList原理与使用.mp4 并发容器ConcurrentLinkedQueue原理与使用.mp4 Java中的阻塞队列原理与使用.mp4 实战:简单实现消息队列.mp4 并发容器ConcurrentHashMap原理与...

    基于JDK源码解析Java领域中的并发锁之设计与实现.pdf

    在Java领域中, 尤其是在并发编程领域,对于多线程并发执行一直有两大核心问题:同步和互斥。其中: - 互斥(Mutual Exclusion):一个公共资源同一时刻只能被一个进程或线程使用,多个进程或线程不能同时使用公共...

    92道Java多线程与并发面试题含答案(很全)

    Java提供了多种同步机制,包括synchronized关键字、Lock接口和Semaphore类。 线程间通信(Inter-Thread Communication):线程间通信允许线程之间共享信息和协作。 线程池(ThreadPool):线程池是一种管理线程资源...

    java并发编程面试题

    java并发编程 基础知识,守护线程与线程, 并行和并发有什么区别? 什么是上下文切换? 线程和进程区别 什么是线程和进程? 创建线程有哪几种方式?,如何避免线程死锁 线程的 run()和 start()有什么区别? 什么是 ...

    Java多线程和并发知识整理

    2.5互斥同步 2.6线程合作 三、Synchronized 详解 3.1 使用 3.2 原理分析 3.3 JVM中锁的优化 3.4 Synchronized与Lock 3.5 扩展 四、volatile 详解 4.1 作用 4.2 实现原理 4.3 应用场景 五、final 详解 5.1...

    Java并发:同步容器&并发容器

     在Java并发编程中,经常听到同步容器、并发容器之说,那什么是同步容器与并发容器呢?同步容器可以简单地理解为通过synchronized来实现同步的容器,比如Vector、Hashtable以及SynchronizedList等容器,如果有多个...

Global site tag (gtag.js) - Google Analytics