YuChen's Blog

Love writing,Love life!

多线程下生产者消费者问题的五种同步方法实现

本文转载自soyoungboy/AndroidInterview,点击查看原文。 生产者消费者模式是通过一个容器来解决生产者和消费者的强耦合问题。 生产者消费者模式的优点如下: 解耦 支持并发 支持忙闲不均 解决方法可分为两类:  (1)用信号量和锁机制实现生产者和消费者之间的同步; wait() / notify()方法 await() / signal...

线程同步的方法

——sychronized、lock、reentrantLock分析

本文转载自soyoungboy/AndroidInterview,点击查看原文。 如果你向一个变量写值,而这个变量接下来可能会被另一个线程所读取,或者你从一个变量读值,而它的值可能是前面由另一个线程写入的,此时你就必须使用同步。 sychronized   Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码,它是在 软...

实现多线程的两种方法

本文转载自soyoungboy/AndroidInterview,点击查看原文。 Java提供了两种创建线程方法: 通过实现Runable接口; 通过继承Thread类本身。 1 .实现 Runnable 接口 声明实现 Runnable 接口的类,该类然后实现 run 方法。然后可以分配该类的实例,在创建 Thread 时作为一个参数来传...

方法锁、对象锁和类锁的意义和区别

本文转载自soyoungboy/AndroidInterview,点击查看原文。 首先需要明白java中锁的机制: synchronized 在修饰代码块的时候需要一个reference对象作为锁的对象。 在修饰方法的时候默认是当前对象作为锁的对象。 在修饰类时候默认是当前类的Class对象作为锁的对象。 方法锁(synchronized修饰方法时) 通过在方...

ThreadPool用法与示例

本文转载自soyoungboy/AndroidInterview,点击查看原文。 1、ThreadPool的优点   在java.util.concurrent包下,提供了一系列与线程池相关的类。合理的使用线程池,可以带来多个好处: 降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗; 提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行; 提...

ThreadLocal的使用规则和源码分析

本文转载自soyoungboy/AndroidInterview,点击查看原文。 ThreadLocal是什么? 线程局部变量,访问某个变量的每个线程都有自己的局部变量,它独立于变量的初始化副本。 它的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲突。从线程的角度看,就好像每一个线程都完全拥有该变量。 ...

wait()和sleep()的区别

本文转载自soyoungboy/AndroidInterview,点击查看原文。 这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类。 sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程里调用b的sleep方法,实际上还是a去睡觉,要让b线程睡觉要在b的代码中调用sleep。 锁: 最主要是sleep方法没有释放锁,而wait方法释...

GPU DVFS源码解析

——关于GPU Mali-T628

一. GPU DVFS调频过程 在ODROID源码目录/kernel/hardkernel/odroidxu3/drivers/gpu/arm/midgard/platform/gpu_dvfs_handler.c文件中定义了gpu_dvfs_event_proc函数,其作用即是对GPU进行调频,其内容如下: static void gpu_dvfs_event_proc(struct ...

使用Python绘制图表(转)

Python Draw Pictures

本文转载自使用Python绘制图表。 在使用Python绘制图表前,我们需要先安装两个库文件numpy和matplotlib。 Numpy是Python开源的数值计算扩展,可用来存储和处理大型矩阵,比Python自身数据结构要高效;matplotlib是一个Python的图像框架,使用其绘制出来的图形效果和MATLAB下绘制的图形类似。 下面介绍如何使用 Python绘图。 注意: ...

JNA On Android

——在AndroidStudio中使用JNA

一.编译Android平台上所需的JNA 使用JNA官方提供的源码进行编译,得到的jna.jar在Android平台上运行时总会出错,这里使用的是pakoito修改后的jna源码。 1.下载jna源码 git clone https://github.com/pakoito/jna.git 2.编译jna源码 1)在jna目录下创建jna.sh,该shell脚本内容如下: #!/...


本站总访问量