`
yysct2005
  • 浏览: 87817 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论
文章列表
Java线程:线程的交互   SCJP5学习笔记   线程交互是比较复杂的问题,SCJP要求不很基础:给定一个场景,编写代码来恰当使用等待、通知和通知所有线程。   一、线程交互的基础知识   SCJP所要求的线程交互知识点需要 ...
一、同步问题提出   线程的同步是为了防止多个线程访问一个数据对象时,对数据造成的破坏。 例如:两个线程ThreadA、ThreadB都操作同一个对象Foo对象,并修改Foo对象上的数据。   public class Foo {     private int x = 100;     public int getX() {         return x;     }     public int fix(int y) {         x = x - y;         return x;     } }   public class MyR ...
Java线程:线程状态的转换   SCJP5学习笔记   一、线程状态   线程的状态转换是线程控制的基础。线程状态总的可分为五大状态:分别是生、死、可运行、运行、等待/阻塞。用一个图来描述如下:   1、新状态:线程对象已经创建,还没有在其上调用start()方法。   2、可运行状态:当线程有资格运行,但调度程序还没有把它选定为运行线程时线程所处的状态。当start()方法调用时,线程首先进入可运行状态。在线程运行之后或者从阻塞、等待或睡眠状态回来后,也返回到可运行状态。   3、运行状态:线程调度程序从可运行池中选择一个线程作为当前线程时线程所处的状 ...
要理解线程调度的原理,以及线程执行过程,必须理解线程栈模型。 线程栈是指某时刻时内存中线程调度的栈信息,当前调用的方法总是位于栈顶。线程栈的内容是随着程序的运行动态变化的,因此研究线程栈必须选择一个运行的时刻(实际上指代码运行到什么地方)。   下面通过一个示例性的代码说明线程(调用)栈的变化过程。     这幅图描述在代码执行到两个不同时刻1、2时候,虚拟机线程调用栈示意图。   当程序执行到t.start();时候,程序多出一个分支(增加了一个调用栈B),这样,栈A、栈B并行执行。   从这里就可以看出方法调用和线程启动的区别了。       本文出自 “熔 ...
一、定义线程   1、扩展java.lang.Thread类。   此类中有个run()方法,应该注意其用法: public void run() 如果该线程是使用独立的 Runnable 运行对象构造的,则调用该 Runnable 对象的 run 方法;否则,该方法不执行任何操作并返回。   Thread 的子类应该重写该方法。 2、实现java.lang.Runnable接口。   void run() 使用实现接口 Runnable 的对象创建一个线程时,启动该线程将导致在独立执行的线程中调用对象的 run 方法。   方法 run 的常 ...
一、操作系统中线程和进程的概念 现在的操作系统是多任务操作系统。多线程是实现多任务的一种方式。 进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程。比如在Windows系统中,一个运行的exe就是一个进程。   线程是指进程中的一个执行流程,一个进程中可以运行多个线程。比如java.exe进程中可以运行很多线程。线程总是属于某个进程,进程中的多个线程共享进程的内存。   “同时”执行是人的感觉,在线程之间实际上轮换执行。   二、Java中的线程 在Java中,“线程”指两件不同的事情:1、java.lang.Thread类的 ...
JDBC Update深度优化   Update是数据同步过程中一个不可缺少的操作,这里所讨论的更新并非写一个update语句更新了一批数据,如果是这样,就没必要写此文章了。 这里所讨论的更新是根据查询对比,决定是否更新、删除等,甚至还要处理一些相关业务。对于这样的操作,JDBC比任何方式的效率都好。这里所谓的批量,是说有一大批这样数据要通过查询检查,然后去做更新、删除操作。   为了进行测试,将问题抽象简化,根据查询更新、删除。   环境:MySQL 5.1RedHat Linux AS 5JavaSE 1.5DbConnectionBroker 微型数据库连接池 优化的策 ...
JDBC批量Insert深度优化(有事务)   环境: MySQL 5.1 RedHat Linux AS 5 JavaSE 1.5 DbConnectionBroker 微型数据库连接池   测试的方案: 执行10万次Insert语句,使用不同方式。   A组:静态SQL,自动提交,没事务控制(MyISAM引擎) 1、逐条执行10万次 2、分批执行将10万分成m批,每批n条,分多种分批方案来执行。   B组:预编译模式SQL,自动提交,没事务控制
JDBC批量Insert深度优化(没事务)   最近在做一个数据同步分发工具,高并发,高效率,异步非实时是主要特点。 为此,选择的方案是JDBC、只有两种操作,插入和更新。   对于更新,只能逐条分批就可以了,优化空间不大。 对于插入,则可以做批量的优化,优化的策略只能是具体问题具体分析,以测试结论为主要依据了。   环境: MySQL 5.1 RedHat Linux AS 5 JavaSE 1.5 DbConnectionBroker 微型数据库连接池   测试的方案: 执行10万次Insert语句,使用不同方式。   A组:静态SQL,自动提交,没事务 ...
java.util.ResourceBundle使用详解   一、认识国际化资源文件   这个类提供软件国际化的捷径。通过此类,可以使您所编写的程序可以:          轻松地本地化或翻译成不同的语言          一次处理多个语言环境          以后可以轻松地进行修改,支持更多的语言环境   说的简单点,这个类的作用就是读取资源属性文件(properties),然后根据.properties文件的名称信息(本地化信息),匹配当前系统的国别语言信息(也可以程序指定),然后获取相应的properties文件的内容。   使用这个类,要注意的一点是,这 ...

JDBC的陷阱

    博客分类:
  • java
1、conn一定要在finally语句块进行关闭。2、Statement、ResultSet尽可能缩小其变量作用域。3、Statement可以使用多次,定义多个。一个Statement对象只和一个ResultSet对象关联,并且是最后一次查询。4、ResultSet在Connection、ResultSet关闭后自动关闭。
操作系统中有若干进程并发执行,它们不断申请、使用、释放系统资源,虽然系统的进程协调、通信机构会对它们进行控制,但也可能出现若干进程都相互等待对方释放资源才能继续运行,否则就阻塞的情况。此时,若不借助外界因素,谁也不能释放资源,谁也不能解除阻塞状态。根据这样的情况,操作系统中的死锁被定义为系统中两个或者多个进程无限期地等待永远不会发生的条件,系统处于停滞状态,这就是死锁。产生死锁的原因主要是:(1) 因为系统资源不足。(2) 进程运行推进的顺序不合适。(3) 资源分配不当等。如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。其次,进程运行推 ...
3.加速JSP编译速度  当第一次访问一个JSP文件时,它会被转换为Java serverlet源码,接着被编译成Java字节码。你可以控制使用哪个编译器,默认情况下,Tomcat使用使用命令行javac进行使用的编译器。也可以使用更快的编译器,但是这里我们将介绍如何优化它们。  另外一种方法是不要把所有的实现都使用JSP页面,而是使用一些不同的java模板引擎变量。显然这是一个跨越很大的决定,但是事实证明至少这种方法是只得研究的。如果你想了解更多有关在Tomcat可使用的模板语言,你可以参考Jason Hunter和William Crawford合著的《Java Servlet Progra ...
一. 引言 性能测试与分析是软件开发过程中介于架构和调整的一个广泛并比较不容易理解的领域,更是一项较为复杂的活动。就像下棋游戏一样,有效的性能测试和分析只能在一个良好的计划策略和具备了对不可预料事件的处理 ...
Tomcat性能优化可从外部环境和自身调整两方面着手。外部环境主要是Tomcat所在服务器的运行环境,包括操作系统层面、部署以及Java虚拟机的配置。 操作系统 这里不再赘述,跟优化其他服务器的思路与步骤没有本质区别。尽可 ...
Global site tag (gtag.js) - Google Analytics