计算机中的颗粒度(granularity)什么是颗粒度?

您所在的位置:网站首页 建模颗粒度 计算机中的颗粒度(granularity)什么是颗粒度?

计算机中的颗粒度(granularity)什么是颗粒度?

2024-07-16 15:30| 来源: 网络整理| 查看: 265

颗粒度越细,表示细节越详尽,越有助于了解事情的全貌 颗粒度越粗,表示细节越少,更多的是抽象概括。

java多线程中就有颗粒度

/*      * 小结:      * 同步方法直接在方法上加synchronized实现加锁,同步代码块则在方法内部加锁,很明显,同步方法锁的范      * 围比较大,而同步代码块范围要小点,一般同步的范围越大,性能就越差,一般需要加锁进行同步的时候,肯      * 定是范围越小越好,这样性能更好      *      * 同步代码块可以用更细粒度的控制锁      *      * 使用同步块,可以减小线程同步的粒度,线程同步的粒度越小越好,即线程同步的代码块越小越好      */

MoneyBox类(储钱罐类)

package com.demo.threadmessage1; //线程间通信的案例,主要是wait()、notify()、notifyAll()这3个函数,这3个函数都是Object类的方法 //sleep()是Thread类的方法 //存钱罐类 public class MoneyBox { //存钱罐中的余额 private double money; public double getMoney() { return money; } // 构造函数 /构造方法/构造器 public MoneyBox(double money) { this.money = money; } //这是存钱的方法,加上synchronized(同步)关键字,写成同步块 public void add(double inMoney, String threadName, int number) { try { //故意让当前线程睡眠会以使别的线程操作它(为了制造张无忌存钱的速度没有赵敏取钱的速度快) Thread.sleep(80); } catch (InterruptedException e) { e.printStackTrace(); } //使用同步块,可以减小线程同步的粒度,线程同步的粒度越小越好,即线程同步的代码块越小越好 /* * 同步代码块可以用更细粒度的控制锁,同步方法锁的范围比较大,而同步代码块范围要小点,一般同步的范围越 * 大,性能就越差,一般需要加锁进行同步的时候,肯定是范围越小越好,这样性能更好 */ synchronized(this){ money += inMoney; System.out.println("-------" + threadName + "第" + number + "次存了" + inMoney + "元,现在存钱罐中的余额=" + money); notifyAll();// 唤醒/通知前期挂起的所有线程 } } //这是取钱的方法,加上synchronized(同步)关键字,写成同步方法 public synchronized void get(double outMoney, String threadName, int number) { while (money < outMoney) {//说明要取的金额超过了存钱罐中的余额 System.out.println("######" + threadName + "第" + number + "次取钱,打算取" + outMoney + "元,但是现在存钱罐中的余额=" + money + ",要取的金额超过了存钱罐中的余额,请你等待......"); try { wait();//让当前线程处于等待状态,即线程挂起(线程处于挂起状态) System.out.println("######" + threadName + "第" + number + "次取钱时的等待结束......,继续第" + number + "次取钱"); } catch (InterruptedException e) { e.printStackTrace(); } } money -= outMoney; System.out.println("$$$$$$$" + threadName + "第" + number + "次取了" + outMoney + "元,现在存钱罐中的余额=" + money); } @Override public String toString() { return "---------------我是存钱罐,我现在的余额=" + money + "---------------"; } /* * 小结: * 同步方法直接在方法上加synchronized实现加锁,同步代码块则在方法内部加锁,很明显,同步方法锁的范 * 围比较大,而同步代码块范围要小点,一般同步的范围越大,性能就越差,一般需要加锁进行同步的时候,肯 * 定是范围越小越好,这样性能更好 * * 同步代码块可以用更细粒度的控制锁 * * 使用同步块,可以减小线程同步的粒度,线程同步的粒度越小越好,即线程同步的代码块越小越好 */ }

https://zhuanlan.zhihu.com/p/65220106



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3