Synchronized快

[java] view plain copy

  1. /*
  2. JAVA对于多线程的安全问题提供了专业的解决方式
  3. 就是同步代码块
  4. synchronized(对象)//这个对象可以为任意对象
  5. {
  6. 需要被同步的代码
  7. }
  8. 对象如同锁,持有锁的线程可以在同步中执行
  9. 没持有锁的线程即使获取CPU的执行权,也进不去
  10. 同步的前提:
  11. 1,必须要有两个或者两个以上的线程
  12. 2,必须是多个线程使用同一个锁
  13. 必须保证同步中只能有一个线程在运行
  14. 好处:解决了多线程的安全问题
  15. 弊端:多个线程需要判断锁,较为消耗资源
  16. */
  17. class Tick implements Runnable
  18. {
  19. private int tick = 50;
  20. Object obj = new Object();//申请一个对象
  21. public void run()
  22. {
  23. while(true)
  24. {
  25. synchronized(obj)
  26. {
  27. if(tick > 0)
  28. {
  29. //try{Thread.sleep(40);}catch(Exception e){}
  30. System.out.println( Thread.currentThread().getName() + " sail --" + tick--);
  31. }
  32. }
  33. }
  34. }
  35. }
  36. class TickDemo
  37. {
  38. public static void main(String []args)
  39. {
  40. Tick t = new Tick();
  41. Thread t1 = new Thread(t);
  42. Thread t2 = new Thread(t);
  43. Thread t3 = new Thread(t);
  44. Thread t4 = new Thread(t);
  45. t1.start();
  46. t2.start();
  47. t3.start();
  48. t4.start();
  49. }
  50. }
时间: 2024-10-23 00:18:11

Synchronized快的相关文章

java synchronized和(ReentrantLock)区别

原文:http://blog.csdn.net/zheng548/article/details/54426947 区别一:API层面 syschronized使用 synchronized即可修饰方法,也可以修饰代码块. synchronized修饰方法时,如下所示: //synchronized修饰一个方法时,这个方法叫同步方法 public synchronized void test(){ //方法体 } synchronized修饰代码块时,包涵两部分:锁对象的引用和这个锁保护的代码块

Java多线程与并发——线程同步

1.多线程共享数据 在多线程的操作中,多个线程有可能同时处理同一个资源,这就是多线程中的共享数据. 2.线程同步 解决数据共享问题,必须使用同步,所谓同步就是指多个线程在同一时间段内只能有一个线程执行指定代码,其他线程要等待此线程完成之后才可以继续执行. 线程进行同步,有以下两种方法: (1)同步代码块 synchronized(要同步的对象){ 要同步的操作; } (2)同步方法 public synchronized void method(){ 要同步的操作; } (3)Lock 3.同步

深入理解JVM读书笔记五: Java内存模型与Volatile关键字

12.2硬件的效率与一致性 由于计算机的存储设备与处理器的运算速度有几个数量级的差距,所以现代计算机系统都不得不加入一层读写速度尽可能接近处理器运算速度的高速缓存(Cache)来作为内存与处理器之间的缓冲:将运算需要使用到的数据复制到缓存中,让运算能快速进行,当运算结束后再从缓存同步回内存之中,这样处理器就无须等待缓慢的内存读写了. 基于高速缓存的存储交互很好地理解了处理器与内存的速度矛盾,但是也为计算机系统带来了更高的复杂度,因为它引入了一个新的问题: 缓存一致性(Cache Coherenc

线程基础知识系列(二)线程的管理

本篇是线程基础知识系列的第二篇,主要简单江夏线程管理相关知识点. 线程基础知识系列(一)线程的创建和启动:说明了线程的2种创建和启动,join(),daemon线程,Callable 任务. 本文的主要内容 线程的状态 线程的优先级 sleep vs wait 线程的流程控制 Interrupt yield让出你的CPU 1.线程的状态 以<线程基础知识系列(一)线程的创建和启动>这张图,是程序的运行时线程信息截图.有main线程,user Threads,daemon Threads.现在咱

线程同步与死锁

一.多线程共享数据 在多线程的操作中,多个线程有可能同时处理同一个资源,这就是多线程的共享数据. 二.线程同步 解决数据共享的安全问题,必须使用同步,所谓同步就是指多个线程在同一个时间段内只能有 一个线程执行指定代码,其他线程要等待此线程完成之后才可以继续执行. 线程进行同步,有下面两种方法: 1).同步代码块. synchronized(要同步的对象){ 要同步的操作; } 2).同步方法(同步的是当前对象,this) public synchronized void method(){ 要同

一天一个设计模式——(Singleton)单例模式(线程安全性)

一.模式说明 有时候,我们希望在应用程序中,仅生成某个类的一个实例,这时候需要用到单例模式. 二.模式类图 三.模式中的角色 Singleton角色,该模式中仅有的一个角色,该角色有一个返回唯一实例的getInstance方法,该方法总是返回同一个实例: 四.代码示例 单例模式比较简单,要实现单例模式只需保证三点: 私有化类的构造函数: 在类中创建类的对象: 提供获取对象的公有方法: package com.designpattern.cn.singletonpattern; public cl

JVM——java内存模型和线程

概述 计算机的运算速度与它的存储和通信子系统速度的差距太大,大量的时间都花费在磁盘I/O.网络通信或者数据库访问上.我们当然不希望处理器大部分时间都处于等待其他资源的状态,要通过一些“手段”去把处理器的运算能力“压榨”出来,不然太浪费了. 衡量一个服务性能的高低好坏,每秒事务处理数(Transactions Per Second,TPS)是最重要的指标之一.代表一秒服务端平均能响应的请求总数,而TPS值与程序的并发能力又有密切的相关. 硬件的效率与一致性 处理器要和内存交互(取运算数据.存储运算

四、java多线程核心技术——synchronized同步方法与synchronized同步快

一.synchronized同步方法 论:"线程安全"与"非线程安全"是多线程的经典问题.synchronized()方法就是解决非线程安全的. 1.方法内的变量为线程安全 public void addI(String username) { try { int num = 0; \\方法内的变量为线程安全 if (username.equals("a")) { num = 100; System.out.println("a set

HashMap,Hashtable,ConcurrentHashMap 和 synchronized Map 的原理和区别

HashMap 是否是线程安全的,如何在线程安全的前提下使用 HashMap,其实也就是HashMap,Hashtable,ConcurrentHashMap 和 synchronized Map 的原理和区别.当时有些紧张只是简单说了下HashMap不是线程安全的:Hashtable 线程安全,但效率低,因为是 Hashtable 是使用 synchronized 的,所有线程竞争同一把锁:而 ConcurrentHashMap 不仅线程安全而且效率高,因为它包含一个 segment 数组,将