自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 Android O HIDL的使用例子 -- 蓝牙HCI 服务进程

目录1、Android O Treble 计划1.1、Treble 计划概览1.2、Android 7.x vs Android O 2、HIDL 基本概念3、HIDL 的使用例子-- 蓝牙 HCI 服务进程3.1、定义 & 实现接口3.2、编译生成的文件3.3、启动 HIDL service3.4、Client 端获取并使用 Service ...

2018-12-11 22:57:03 5723

原创 Linux下编译OpenJDK7

《深入理解Java虚拟机》第一章介绍了自己编译JDK,倒腾了半天,遇到的问题不少。这里写下在Ubuntu下编译OpenJDK7的操作过程。参考的博客:http://blog.csdn.net/u011521890/article/details/52197723http://lc87624.iteye.com/blog/1542354http://blog.csdn.net

2016-11-13 13:34:00 4368 1

原创 《多线程编程》学习之十:定时器Timer的使用,线程安全的单例模式

一、定时器Timer的使用         定时器 Timer类主要的作用是设置计划任务,它在内部使用多线程的方式进行处理;而抽象的TimerTask类负责封装任务,它实现了Runnable接口。1)schedule(TimerTask task,Date time)          此方法表示,如果设定的时间早于当前时间,则立即执行;否则等待time指定的时间再执行task任务。

2016-11-08 16:21:39 4454

原创 《多线程编程》学习之九:Lock的使用

一、ReentrantLock类的使用1.1)使用ReenrtantLock类实现同步          在java多线程中,可以使用synchronized关键字实现线程之间的互斥,而JDK1.5新增的ReentrantLock类也能达到类似的效果,且使用上比synchronized更灵活、强大。下面例子中,调用ReentrantLock类的lock()获取锁,调用unlock()释放锁

2016-11-05 14:14:54 517

原创 《多线程编程》学习之八:方法join()的使用、类ThreadLocal的使用

一、join()方法的使用        一般主线程用于创建与启动子线程,如果子线程的run()方法耗时比较长,主线程常先于子线程结束。如果需要主线程等待子线程执行完毕后再结束,就要用到join()方法。1.1)子线程运行时间不确定,主线程中没法用sleep(?)方法去等待它执行完毕。1.2)使用join()方法解决:        join()方法使当前线

2016-11-03 13:58:47 599

原创 《多线程编程》学习之七:等待/通知机制(二)

1、生产者与消费者问题          利用等待/通知机制,实现一生产与一消费:操作栈。生产者向栈中生产数据,消费者从栈中消费数据,栈的最大容量为1。

2016-10-30 20:24:33 410

原创 《多线程编程》学习之七:等待/通知机制(一)

今天起开始学习线程之间的通信。等待/通知机制是通过Object类的wait()与notify()方法来实现的,这两个方法在同步方法或同步代码块中才能被执行。wait()方法将当前线程放入“等待执行队列”中,使线程在wait()方法所处代码处停止执行,直到被唤醒或者被中断为止,执行wait()方法会释放对象锁。notify()方法用于通知等待对象锁的其它线程,但执行notify()方法并不会立即释放

2016-10-27 14:00:47 445

原创 《多线程编程》学习之六:String的常量池特性,锁对象的改变,volatile关键字

1、String的常量池特性        在JVM中具有常量池缓存功能,如String s1 = "abc"; String s2 = "abd";   这里s1与s2代表同一个String对象。当我们在同步代码块synchronized(string){ }使用String作为锁对象时,可能会出现问题。看下面例子:例一:测试结果:         

2016-10-23 16:15:04 1218 1

原创 《多线程编程》学习之五:synchronized同步语句块,静态同步synchronized方法与synchronized(类名.class)代码块

在介绍同步语句块之前,先做一个实验,验证多个线程调用同一个同步方法是随机的。例子一:1)MyList.java2)测试:        可见,在同步方法中的代码是同步打印的,但线程A和线程B是异步执行的,这可能会出现脏读的情况。看下面的例子:例子二:1) 在上面例子的基础上,创建业务类MyListService.java:

2016-10-20 13:28:16 3005

原创 《多线程编程》学习之四:synchronized同步方法

“非线程安全”发生在多个线程对同一对象的实例变量进行并发访问时,结果是产生“脏读”(取得的数据是被别的线程更改过的)。1.1 实例变量非线程安全      先看下面一个例子:为普通会员与vip会员设置相应的折扣。1)Discount.java : 是一个接口,里面只有一个setDiscount(String level)方法2)InstanceVar.java:实现Disc

2016-10-19 17:34:29 349

原创 《多线程编程》学习之三:停止线程 interrupt()、isInterrupted()、 Thread.interrupted()

1、停止线程1.1 停止不了的线程      interrupt()方法不会终止一个正在运行的线程,它只是给线程打上一个标志。        可见,调用interrupt()方法并没有停止线程。1.2  判断线程是否是停止状态1.2.1   Thread.interrupted():测试当前执行的线程是否已经中断,会清除线程的中断状态。例子一:

2016-10-18 14:55:45 1159 1

原创 《多线程编程》学习之二:Thread.currentThread()、isAlive()、Thread.sleep()的使用

1、Thread.currentThread()方法: 返回当前正在运行的线程一个简单的例子:             MyThread_7.java类的构造函数是被main线程调用的,而run()方法是被名为Thread-0的线程调用的。注意这里使用thread.start(),而不是thread.run(),前者run()方法是自动调用的,后者并没有另起一个线程,而是直接调用MyThr

2016-10-17 18:37:32 4677 1

原创 《多线程编程》学习之一:使用多线程及线程安全

1.1 进程和线程的概念进程是受操作系统管理的基本运行单元,而线程可理解为在进程中独立运行的子任务。使用多线程技术,可在同一时间内运行不同的任务,使系统的运行效率提高。   一个运行着的程序至少有一个线程在运行,调用public static void main(String[] args)方法的线程是有JVM创建的。1.2 使用多线程1.2.1 继承Thread类1)

2016-10-16 22:01:15 1010

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除