摘要: 在多线程并发编程的过程中,执行重排序有时候会造成错误的后果,比如一个线程在main线程中调用setFlag(true)的前边修改了某些程序配置项,而在t1线程里需要用到这些配置项,所以会造成配置缺失的错误。但是java给我们提供了一些抑制指令重排序的方式。 1.同步代码抑制指令重排序 将需要抑制指令 阅读全文
posted @ 2019-02-20 23:36 hcss 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 1.尽量将共享变量(共享变量指的是在堆内存上创建的对象或者数组,包括成员变量、静态变量和数组元素。)定义为局部变量。 2.如果多线程只是读取变量,可以定义全局final。 3.使用ThreadLocal将变量创建为线程私有。 4.加锁(变量的读写位置都进行必要的同步处理;对于同一个字段来说,在多个访 阅读全文
posted @ 2019-02-20 23:01 hcss 阅读(2337) 评论(0) 推荐(0) 编辑
摘要: 如何使main最后退出呢:(join方法) 阅读全文
posted @ 2019-02-20 13:52 hcss 阅读(233) 评论(0) 推荐(0) 编辑
摘要: Thread.sleep()1.静态方法是定义在Thread类中。2.Thread.sleep()方法用来暂停当前执行的线程,将CPU使用权释放给线程调度器,但不释放锁(也就是说如果有synchronized同步快,其他线程仍然不能访问共享数据),进入sleeping状态 的线程不能被notify方 阅读全文
posted @ 2019-02-20 01:36 hcss 阅读(931) 评论(0) 推荐(0) 编辑