`
xieboke
  • 浏览: 4741 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

java程序并发遇到的问题

 
阅读更多
1. 避免在list上进行remove操作,如果一定要进行必须这么做

Iterator<A> iterator = list.iterator();
while (iterator.hasNext())
{
    A temp = iterator.next();
    iterator.remove();
}

2. 扩大JVM的内存使用面积

如果建立的是一个网络服务,那么就需要在tomcat或者jetty这种servlet容器的配置文件中加入JVM的内存使用值。

3. 扩大或者减少tomcat或者jetty的线程数

并不是线程越大越适合于并发的环境,有时候线程太多反而会造成程序并发数的降低挂掉。所以有时候完成并发测试需要不断调试线程数目。

4. 避免让静态函数调用静态变量

如果多个需求调用同一个网络服务或者java程序,那么一个静态变量就会被多个需求共享。一旦一个需求修改了这个静态变量,那么其他的需求可能是按照静态变量的改变值来运行网络服务或者程序。比如:有一个静态变量是一个ArrayList,当一个需求在读取list的值时,另外一个需求已经清空了这个list,那么前一个需求在读取过程中就会报错。

如果一定要用到静态变量的值的话,可以重新声明一个同样数据结构的非静态变量,然后把静态变量的值“深度”拷贝到这个新声明的非静态变量。之所以要深度拷贝,是因为如果这个静态变量是个对象的话,当静态变量的值改变了之后,被拷贝的非静态变量也会发生改变,就失去了重新声明的意义了。
分享到:
评论

相关推荐

    Java并发编程面试题--共87题

    大多数待遇丰厚的Java开发职位都要求开发者精通多线程技术并且有丰富的Java程序开发、调试、优化经验,所以线程相关的问题在面试中经常会被提到。 注:本文档根据http://www.importnew.com/12773.html 和...

    java并发之内存模型.docx

    在并发编程中,需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发...如果编写多线程程序的Java程序员不理解隐式进行的线程之间通信的工作机制,很可能会遇到各种奇怪的内存可见性问题。

    java服务程序性能测试总结

    前端时间项目中需要对java服务程序进行性能测试,确保服务程序能够满足业务的并发需求,这里把整个过程中遇到的问题以及解决方法做一个总结,下次遇到类似问题的时候可以参考,提高效率。 1. 采用jmeter编写压测脚本...

    JAVA_API1.6文档(中文)

    java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中显示元素逻辑相关的实体之间传输信息。 java.awt.event 提供处理由 AWT 组件所激发的...

    JAVA上百实例源码以及开源项目

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    JAVA上百实例源码以及开源项目源代码

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    并发编程面试专题.pdf

    6)用 Java 编程一个会导致死锁的程序,你将怎么解决? 7) 什么是原子操作,Java 中的原子操作是什么? 8) Java 中的 volatile 关键是什么作用?怎样使用它?在 Java 中它跟 synchronized 方法有什么不同? 9) 什么...

    Java 1.6 API 中文 New

    java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中显示元素逻辑相关的实体之间传输信息。 java.awt.event 提供处理由 AWT 组件所激发的...

    Java八股文的面试题

    Java虚拟机(JVM): JVM是运行所有Java程序的虚拟机环境,实现了Java的跨平台特性。JVM负责将Java字节码转换为机器码执行,同时提供内存管理和垃圾回收等功能。 垃圾回收(GC): Java通过垃圾回收机制自动管理内存,...

    java开源包11

    在浏览器上运行Java程序 Doppio DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程...

    java开源包6

    在浏览器上运行Java程序 Doppio DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程...

    java开源包9

    在浏览器上运行Java程序 Doppio DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程...

    java开源包4

    在浏览器上运行Java程序 Doppio DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程...

    java开源包101

    在浏览器上运行Java程序 Doppio DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程...

    java开源包5

    在浏览器上运行Java程序 Doppio DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程...

    java开源包8

    在浏览器上运行Java程序 Doppio DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程...

    java api最新7.0

    java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中显示元素逻辑相关的实体之间传输信息。 java.awt.event 提供处理由 AWT 组件所激发的...

    java开源包10

    在浏览器上运行Java程序 Doppio DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程...

    JavaAPI1.6中文chm文档 part1

    java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中显示元素逻辑相关的实体之间传输信息。 java.awt.event 提供处理由 AWT 组件所激发的...

    java开源包3

    在浏览器上运行Java程序 Doppio DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程...

Global site tag (gtag.js) - Google Analytics