成功的路上总是离不开贵人的帮助,名师的指点和小人的刺激。

莫怕,过了桥,就翻篇了

随笔分类 -  多线程

1 2 3 下一页

2.3.7synchronized代码块有volatile同步的功能
摘要:关键字synchronized可以使多个线程访问同一个资源具有同步性,而且他还具有将线程工作内存中的私有变量与公共内存中的变量同步的功能。 以-server服务器模式运行得到死循环 得到上面结果的原因是各个线程间的数据值没有可视性造成的。而关键字synchronized具有可视性。 更改Servic 阅读全文

posted @ 2017-12-09 21:12 痞子陈2016 阅读(482) 评论(0) 推荐(0)

2.3.6原子类也并不完全安全
摘要:原子类在具有逻辑的情况下输出结果也具有随机性 结果分析: 打印顺序出错了,应该每次加100在加一次1,出现这样的情况原因是addAndGet()方法是原子的,但方法和方法直接的调用却不是原子的 解决方案同步 阅读全文

posted @ 2017-12-09 20:58 痞子陈2016 阅读(276) 评论(0) 推荐(0)

2.3.5使用原子类进行i++操作
摘要:除了在i++操作时使用synchronized关键字实现同步外,还可以使用AtomicInteger原子类进行实现 原子操作时不可分割的整体,没有其他线程能够中断或检查正在原子操作的变量,一个原子类型就是一个原子操作的可用类型,他可以在没有锁的情况下,做到线程安全 程序运行结果累加到了50000 阅读全文

posted @ 2017-12-09 20:46 痞子陈2016 阅读(314) 评论(0) 推荐(0)

2.3.4volatile的原子性
摘要:关键字volatile虽然增加了实例变量在多个线程之间的可见性,但它却不具备同步性,那么也不具备原子性。 测试 结果:线程异步 更改加上关键字synchronized 在本例中,如果在方法private static void addCount()前加入synchronized同步关键字,也就没有必 阅读全文

posted @ 2017-12-09 20:40 痞子陈2016 阅读(251) 评论(0) 推荐(0)

2.3.3解决异步死循环
摘要:测试 程序处于死循环,为何呢?代码线程被停止了从未被执行。 原因: 在启动RunThread.java线程时,变量private boolean isRunning=true;存在于公共堆栈及线程的私有堆栈中,在JVM被设置为-server模式时为了线程 运行的效率,线程一直在私有堆栈中取得isRu 阅读全文

posted @ 2017-12-09 18:10 痞子陈2016 阅读(518) 评论(0) 推荐(0)

2.3.2解决同步死循环
摘要:测试如下 但当上面的例子代码的格式运行在-server服务器的模式中64bit的JVM上时,会出现死循环 解决的方案时使用volatile关键字 关键字volatile的作用是强制从公共堆栈中取得变量的值,而不是从线程私有数据栈中取得变量的值 阅读全文

posted @ 2017-12-09 17:05 痞子陈2016 阅读(245) 评论(0) 推荐(0)

2.3.1关键字volatile与死循环
摘要:关键字volatile的主要作用是使变量在多个线程间可见。 测试如下 程序开始运行后 根本没停下来。原因是main线程一直处理while()循环,导致程序不能执行下面的代码。解决办法肯定是用多线程技术 阅读全文

posted @ 2017-12-09 16:55 痞子陈2016 阅读(515) 评论(0) 推荐(0)

2.2.16锁对象的改变
摘要:在将任何数据类型作为同步锁时,需要注意的是,是否有多个线程同时持有锁对象,如果同时持有相同的锁对象,则这些线程之间就是同步的,如果分别获得锁对象,这些线程之间是异步的。 结果分析: 因为50毫秒过后线程B 获得的锁是456 继续测试: 去掉代码Thread.sleep(50) 线程A和B持有的锁都是 阅读全文

posted @ 2017-12-09 15:34 痞子陈2016 阅读(201) 评论(0) 推荐(0)

2.2.15内置类与同步:测试2
摘要:本实验测试同步代码块synchronized(class2)对class2上锁后,其他线程只能以同步的方式调用class2中的静态同步方法 结果分析 InnerClass1中method1和InnerClass2method1的锁对象是同一个,而InnerClass1中的method2的锁对象是In 阅读全文

posted @ 2017-12-09 15:08 痞子陈2016 阅读(193) 评论(0) 推荐(0)

2.2.14内置类与同步:测试1
摘要:本实验测试是在内置类中有两个同步方法,但使用的却是不同的锁,打印结果也是异步的 由于持有不同的对象监视器,所以打印结果就是乱序的。 阅读全文

posted @ 2017-12-09 14:53 痞子陈2016 阅读(164) 评论(0) 推荐(0)

2.2.13内置类与静态内置类
摘要:关键字synchronized的知识点还涉及内置类的使用。 内置类还有一种叫做静态内置类 阅读全文

posted @ 2017-12-09 14:43 痞子陈2016 阅读(249) 评论(0) 推荐(0)

2.2.12多线程的死锁
摘要:java线程死锁是一个经典的多线程问题,因为不同的线程都在等待根本不可能释放的锁,从而导致所有的任务无法继续完成,在多线程技术中,死锁是必须避免的,因为会造成线程的假死。 程序运行结果如上。 可以用jdk自带的工具来监测是否有死锁现象 监测出现死锁 死锁是程序设计的bug,在程序设计时就要避免双方互 阅读全文

posted @ 2017-12-09 13:56 痞子陈2016 阅读(173) 评论(0) 推荐(0)

2.2.11同步synchronized方法无限等待与解决
摘要:同步方法容易造成死循环。 结果运行: 线程B永远得不到运行的机会,锁死了。 这时可以使用同步代码块来解决这样的问题 更改Service.java文件代码 运行结果不再出现同步等待的情况。 阅读全文

posted @ 2017-12-09 13:33 痞子陈2016 阅读(577) 评论(0) 推荐(0)

2.2.10数据类型String的常量池特性
摘要:在JVM中具有String常量池缓存的功能 将synchronized(string)同步代码块和String联合使用,结果出现意外 测试 结果是无限循环的打印a 出现这种情况的原因是因为String的两个值都是AA,两个线程持有相同的锁。所以造成线程B不能执行,这就是String常量2池带来的问题 阅读全文

posted @ 2017-12-08 21:49 痞子陈2016 阅读(309) 评论(0) 推荐(0)

2.2.9静态同步synchronized方法与synchronized(class)代码块
摘要:关键字synchronized还可以应用在static静态方法上,这样写那是对当前的*.java文件对应的class类进行持锁, 测试如下 程序运行结果: 同步的效果,和将synchronized关键字加到非static方法上使用的效果一致,但还是存在本质上的区别,synchronized加到sta 阅读全文

posted @ 2017-12-08 21:35 痞子陈2016 阅读(254) 评论(0) 推荐(0)

2.2.8细化验证3个结论
摘要:synchronized(非this对象x)格式的写法是将对象本身作为对象监视器,这样就可以得出以下3个结论。 1)当多个对象同时执行synchronized(x){}同步代码块是呈同步效果 2)当其他线程执行x对象中的synchronized同步方法呈现同步效果 3)当其他线程执行x对象方法里面的 阅读全文

posted @ 2017-12-08 20:54 痞子陈2016 阅读(132) 评论(0) 推荐(0)

2.2.7将任意对象作为对象监视器
摘要:多个线程调用同一个对象中的不同名称的synchronized同步方法或者synchronized(this)同步代码块时,调用的效果就是按照顺序执行,也就是同步,阻塞的。 这说明synchronized同步方法和synchronized(this)同步代码块分别有两种作用。 a. synchroni 阅读全文

posted @ 2017-12-07 20:03 痞子陈2016 阅读(220) 评论(0) 推荐(0)

2.2.6验证同步代码块时锁定当前对象的
摘要:和synchronized方法一样,synchronized(this)代码块也是锁定当前对象的。 上面结果执行是异步执行的,下面更改othermethod 阅读全文

posted @ 2017-12-07 18:40 痞子陈2016 阅读(977) 评论(0) 推荐(0)

2.2.5synchronized代码间的同步性
摘要:结果分析:当一个线程访问object的一个同步代码块时,其他线程对同一个object的所有其他的同步代码块将被阻塞,这说明同步代码块使用的是对象监视 阅读全文

posted @ 2017-12-06 22:12 痞子陈2016 阅读(178) 评论(0) 推荐(0)

2.2.4一半异步,一半同步
摘要:本例说明:不在同步代码块的是异步执行,在同步代码块时同步的 结果可知:同步代码块的代码是排队执行的,而非同步代码块是异步执行的。 阅读全文

posted @ 2017-12-06 22:06 痞子陈2016 阅读(157) 评论(0) 推荐(0)

1 2 3 下一页

导航