多线程的同步问题代码实例
来源:互联网 发布:ubuntu安装文件格式 编辑:程序博客网 时间:2024/05/16 14:41
在多个线程执行同一段代码时,由于数据共享的原因,可能出现线程间互相干扰的情况,可以用同步锁对同步问题进行处理,代码如下:
public class SynchronizedDemo {private static int i = 0;public static void main(String[] args) {Thread[] ths = new Thread[5];for(int i = 0; i < ths.length; i++) {ths[i] = new Thread(new MyRunnable());ths[i].start();}for (Thread th : ths) {try {th.join();} catch (InterruptedException e) {e.printStackTrace();}}System.out.println("i:" + i);}static class MyRunnable implements Runnable {@Overridepublic void run() {synchronized(SynchronizedDemo.class) {//当i为0时,才加1if (i == 0) {try {//为模拟出多个线程间互相干扰,人为使得线程休眠1秒Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}i++;}}}}}运行该程序n次,只有一种打印结果,打印结果:
i:1
如果去掉同步锁synchronized(SynchronizedDemo.class),运行该程序n次,有多种打印结果:
i:5
i:4
显然i:1是需要的结果,这个示例其实就是单例设计模式中加同步锁的原因,只改变i的值一次(唯一对象实例)
阅读全文
0 0
- 多线程的同步问题代码实例
- 多线程的同步问题
- java多线程-多线程同步代码块-银行存款实例-锁synchronized
- 多线程_同步代码快的锁及同步方法应用和锁的问题
- 多线程-同步代码快的锁及同步方法应用和锁的问题
- Java多线程同步---以银行存取钱的过程的简单代码实例
- 多线程同步的笔试问题
- java多线程的同步问题
- Servlet的多线程同步问题
- Java多线程的同步问题
- 多线程的同步问题小结
- c-多线程同步的问题
- Servlet的多线程同步问题
- 多线程之间的同步问题
- 关于java多线程中同步的问题(两个线程访问同一个实例类的两个同步方法,会不会互相影响)
- 多线程创建的两种方式和线程同步问题实例
- 跟着实例学习java多线程8-同步容器类的问题
- 多线程安全问题及代码的同步
- HDU 6060 RXD and dividing
- ubuntu平台vim的安装和配置
- 使用Redis存储Nginx+Tomcat负载均衡集群的Session
- Mac下怎么修改修改php.ini
- jquery检查某个元素在网页上是否存在?
- 多线程的同步问题代码实例
- 人活着系列之寻找最完美的人生(Prim)
- 实现双击进入编辑,失去焦点后保存数据(Angular)
- OpenCV学习(8) 分水岭算法(2)
- Redis容量评估模型
- ASP.NET – 维持 ViewState
- 新一代人工智能发展规划
- 无线网络覆盖
- Android设计模式-MVP模式初步摸索