自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java编程思想 操作符总结

使用Java操作符加号和一元的正号(+) 减号和一元的负号(-) 乘号(*) 除号(/)以及赋值号(=)几乎所有的操作符都只能操作 基本类型 例外的操作符是 = == 和 != 这些操作符能操作所有的对象 String类支持 +和+=优先级先乘除后加减String后面紧跟一个 + 而这个+的后面又紧跟一个非String类型的元素时 就会尝试着将这个非String类型的元素转换为Strin...

2019-05-31 15:56:54 169

原创 Java编程思想 一切都是对象总结

用引用操纵对象Sting s;这里所创建的只是引用 并不是对象创建一个引用的同时便进行初始化String s = “asdf”;字符串可以用带引号的文本初始化必须由你创建所有对象String s = new String(“asdf”);new关键字的意思是 给我一个新对象它不仅表示 给我一个新的字符串 而且通过提供一个初始字符串 给出了怎样产生这个String的信息存储到什么...

2019-05-30 15:24:08 164

原创 Java并发编程实战 Java内存模型总结

什么是内存模型 为什么需要它如果缺少同步 那么将会有许多因素使得线程无法立即甚至永远 看到另一个线程的操作结果 在编译器中生成的指令顺序 可以与源代码中的顺序不同 此外编译器还会把变量保存在寄存器而不是内存中 处理器可以采用乱序或并行等方式来执行指令 缓存可能会改变将写入变量提交到主内存的次序 而且 保存在处理器本地缓存中的值 对于其他处理器是不可见的 这些因素都会使得一个线程无法看到变量的最新...

2019-05-28 15:28:59 168

原创 Java并发编程实战 原子变量与非阻塞同步机制总结

锁的劣势现代的许多JVM都对非竞争锁获取和锁释放等操作进行了极大的优化 但如果有多个线程同时请求锁 那么JVM就需要借助操作系统的功能 如果出现了这种情况 那么一些线程将被挂起并且在稍后恢复运行 当线程恢复执行时 必须等待其他线程执行完它们的时间片以后 才能被调度执行 在挂起和恢复线程等过程中存在着很大的开销 并且通常存在着较长时间的中断 如果在基于锁的类中包含有细粒度的操作(例如同步容器类 在...

2019-05-27 18:39:52 153

原创 Java并发编程实战 构建自定义的同步工具总结

状态依赖性的管理在单线程程序中调用一个方法时 如果某个基于状态的前提条件未得到满足(例如 连接池必须非空) 那么这个条件将永远无法成真 因此 在编写顺序程序中的类时 要使得这些类在它们的前提条件未被满足时就失败 但在并发程序中 基于状态的条件可能会由于其他线程的操作而改变:一个资源池可能在几条指令之前还是空的 但现在却变为非空的 因为另一个线程可能会返回一个元素到资源池 对于并发对象上依赖状态的...

2019-05-27 16:07:30 180

原创 Java并发编程实战 显式锁总结

Lock与ReentrantLockLock接口public interface Lock { void lock(); void lockInterruptibly() throws InterruptedException; boolean tryLock(); boolean tryLock(long time,TimeUnit unit) throws InterruptedE...

2019-05-24 14:52:26 144

原创 Java并发编程实战 并发程序的测试总结

在测试并发程序时 所面临的主要挑战在于:潜在错误的发生并不具有确定性 而是随机的 要在测试中将这些故障暴露出来 就需要比普通的串行程序测试覆盖更广的范围并且执行更长的时间正确性测试在为某个并发类设计单元测试时 首先需要执行与测试串行类时相同的分析——找出需要检查的不变性条件和后验条件 幸运的话 在类的规范中将给出其中大部分的条件 而在剩下的时间里 当编写测试时将不断地发现新的规范基于信号量的...

2019-05-23 17:49:29 609

原创 Java并发编程实战 性能与可伸缩性总结

对性能的思考要想通过并发来获得更好的性能 需要努力做好两件事情:更有效地利用现有处理资源 以及在出现新的处理资源时使程序尽可能地利用这些新资源性能与可伸缩性应用程序的性能可以采用多个指标来衡量 例如服务时间 延迟时间 吞吐率 效率 可伸缩性以及容量等可伸缩性指的是:当增加计算资源时(例如CPU 内存 存储容量或I/O带宽) 程序的吞吐量或者处理能力能相应地增加评估各种性能权衡因素避免不...

2019-05-23 11:28:56 203

原创 Java并发编程实战 避免活跃性危险总结

在安全性与活跃性之间通常存在着某种制衡 我们使用加锁机制来确保线程安全 但如果过度地使用加锁 则可能导致锁顺序死锁(Lock-Ordering Deadlock) 同样 我们使用线程池和信号量来限制对资源的使用 但这些被限制的行为可能会导致资源死锁(Resource Deadlock) Java应用程序无法从死锁中恢复过来 因此在设计时一定要排除那些可能导致死锁出现的条件死锁当一个线程永远地持...

2019-05-16 16:51:29 145

原创 Java并发编程实战 图形用户界面应用程序总结

为什么GUI是单线程的许多人曾经尝试过编写多线程的GUI框架 但最终都由于竞态条件和死锁导致的稳定性问题而又重新回到单线程的事件队列模型:采用一个专门的线程从队列中抽取事件 并将它们转发到应用程序定义的事件处理器(AWT最初尝试在更大程度上支持多线程访问 而正是基于在AWT中得到的经验和教训 Swing在实现时决定采用单线程模型)不过 我相信你还是可以成功地编写出多线程的GUI工具包 只要做到...

2019-05-16 13:02:19 370

原创 Java并发编程实战 线程池的使用总结

在任务与执行策略之间的隐性耦合Executor框架可以将任务的提交与任务的执行策略解耦开来 将像许多对复杂过程的解耦操作那样 这种论断多少有些言过其实了 虽然Executor框架为制定和修改执行策略都提供了相当大的灵活性 但并非所有的任务都能适用所有的执行策略 有些类型的任务需要明确地指定执行策略 包括:依赖性任务使用线程封闭机制的任务对响应时间敏感的任务使用ThreadLocal的任...

2019-05-14 16:08:51 442

原创 Java并发编程实战 取消与关闭总结

任务取消如果外部代码能在某个操作正常完成之前将其置入 完成 状态 那么这个操作就可以称为可取消的(Cancellable) 取消某个操作的原因很多:用户请求取消有时间限制的操作应用程序事件错误关闭在Java中没有一种安全的抢占式方法来停止线程 因此也就没有安全的抢占式方法来停止任务 只有一些协作式的机制 使请求取消的任务和代码都遵循一种协商好的协议其中一种协作机制能设置某个 已...

2019-05-07 18:32:17 334

空空如也

空空如也

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

TA关注的人

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