上一页 1 ··· 43 44 45 46 47 48 49 50 51 ··· 68 下一页
  2013年7月24日
摘要: 线程的同步是保证多线程安全访问竞争资源的一种手段。线程的同步是Java多线程编程的难点,往往开发者搞不清楚什么是竞争资源、什么时候需要考虑同步,怎么同步等等问题,当然,这些问题没有很明确的答案,但有些原则问题需要考虑,是否有竞争资源被同时改动的问题? 在本文之前,请参阅《Java多线程-线程的同步与锁》,本文是在此基础上所写的。 对于同步,在具体的Java代码中需要完成一下两个操作:把竞争访问的资源标识为private;同步哪些修改变量的代码,使用synchronized关键字同步方法或代码。当然这不是唯一控制并发安全的途径。 synchronized关键字使用说明synchronized只能 阅读全文
posted @ 2013-07-24 10:27 Ruthless 阅读(2257) 评论(0) 推荐(0) 编辑
摘要: 守护线程与普通线程写法上基本没啥区别,调用线程对象的方法setDaemon(true),则可以将其设置为守护线程。 守护线程使用的情况较少,但并非无用,举例来说,JVM的垃圾回收、内存管理等线程都是守护线程。还有就是在做数据库应用时候,使用的数据库连接池,连接池本身也包含着很多后台线程,监控连接个数、超时时间、状态等等。setDaemon方法的详细说明:public final void setDaemon(boolean on):将该线程标记为守护线程或用户线程。当正在运行的线程都是守护线程时,Java虚拟机退出。 该方法必须在启动线程前调用。 该方法首先调用该线程的checkA... 阅读全文
posted @ 2013-07-24 10:05 Ruthless 阅读(7127) 评论(0) 推荐(0) 编辑
摘要: 线程的合并的含义就是将几个并行线程的线程合并为一个单线程执行,应用场景是当一个线程必须等待另一个线程执行完毕才能执行时可以使用join方法。join为非静态方法,定义如下:void join(): 等待该线程终止。 void join(long millis): 等待该线程终止的时间最长为 millis 毫秒。 void join(long millis, int nanos): 等待该线程终止的时间最长为 millis 毫秒 + nanos 纳秒。package cn.thread;/** * 线程的调度(合并) * * @author 林计钦 * @version 1.0 2... 阅读全文
posted @ 2013-07-24 09:53 Ruthless 阅读(5908) 评论(1) 推荐(0) 编辑
摘要: 线程的让步含义就是使当前运行着线程让出CPU资源,但是扔给谁不知道,仅仅是让出,线程状态回到可运行状态。 线程的让步使用Thread.yield()方法,yield()为静态方法,功能是暂停当前正在执行的线程对象,并执行其他线程。package cn.thread;/** * 线程的调度(让步) * * @author 林计钦 * @version 1.0 2013-7-24 上午09:42:41 */public class ThreadYield { public static void main(String[] args) { ThreadYield thread... 阅读全文
posted @ 2013-07-24 09:46 Ruthless 阅读(2143) 评论(1) 推荐(0) 编辑
摘要: 与线程休眠类似,线程的优先级仍然无法保障线程的执行次序。只不过,优先级高的线程获取CPU资源的概率较大,优先级低的并非没机会执行。 线程的优先级用1-10之间的整数表示,数值越大优先级越高,默认的优先级为5。 在一个线程中开启另外一个新线程,则新开线程称为该线程的子线程,子线程初始优先级与父线程相同。package cn.thread;/** * 线程的调度(优先级) * * @author 林计钦 * @version 1.0 2013-7-24 上午09:30:42 */public class ThreadPriority { public static void mai... 阅读全文
posted @ 2013-07-24 09:38 Ruthless 阅读(3338) 评论(0) 推荐(0) 编辑
摘要: Java线程调度是Java多线程的核心,只有良好的调度,才能充分发挥系统的性能,提高程序的执行效率。 这里要明确的一点,不管程序员怎么编写调度,只能最大限度的影响线程执行的次序,而不能做到精准控制。 线程休眠的目的是使线程让出CPU的最简单的做法之一,线程休眠时候,会将CPU资源交给其他线程,以便能轮换执行,当休眠一定时间后,线程会苏醒,进入准备状态等待执行。线程休眠的方法是Thread.sleep(long millis)和Thread.sleep(long millis, int nanos),均为静态方法,那调用sleep休眠的哪个线程呢?简单说,哪个线程调用sleep,就休眠哪个线程。 阅读全文
posted @ 2013-07-24 09:20 Ruthless 阅读(7881) 评论(0) 推荐(0) 编辑
  2013年7月23日
摘要: 一、线程交互的基础知识void notify():唤醒在此对象监视器上等待的单个线程。 void notifyAll():唤醒在此对象监视器上等待的所有线程。 void wait():导致当前的线程等待,直到其他线程调用此对象的 notify()方法或 notifyAll()方法。 当然,wait()还有另外两个重载方法:void wait(long timeout):导致当前的线程等待,直到其他线程调用此对象的 notify()方法或 notifyAll()方法,或者超过指定的时间量。 void wait(long timeout, int nanos):导致当前的线程等待,直到其他线程调用 阅读全文
posted @ 2013-07-23 16:56 Ruthless 阅读(11298) 评论(0) 推荐(3) 编辑
摘要: 一、同步问题提出线程的同步是为了防止多个线程访问一个数据对象时,对数据造成的破坏。例如:两个线程ThreadA、ThreadB都操作同一个对象Foo对象,并修改Foo对象上的数据。package cn.thread;public class Foo { private int x = 100; public int getX() { return x; } public int fix(int y) { x = x - y; return x; }}package cn.thread;public class MyRunn... 阅读全文
posted @ 2013-07-23 16:38 Ruthless 阅读(50422) 评论(6) 推荐(17) 编辑
摘要: 线程可以分为4个状态:New(新生),Runnable(可运行):为了方便分析,还可将其分为:Runnable与Running。blocked(被阻塞),Dead(死亡)。与人有生老病死一样,线程也同样要经历开始(等待)、运行、挂起和停止四种不同的状态。这四种状态都可以通过Thread类中的方法进行控制。下面给出了Thread类中和这四种状态相关的方法。// 开始线程 public void start( ); public void run( ); // 挂起和唤醒线程 public void resume( ); // 不建议使用 public void suspend... 阅读全文
posted @ 2013-07-23 14:49 Ruthless 阅读(23273) 评论(0) 推荐(1) 编辑
摘要: 一、操作系统中线程和进程的概念现在的操作系统是多任务操作系统。多线程是实现多任务的一种方式。进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程。比如在Windows系统中,一个运行的exe就是一个进程。 线程是指进程中的一个执行流程,一个进程中可以运行多个线程。比如java.exe进程中可以运行很多线程。线程总是属于某个进程,进程中的多个线程共享进程的内存。 “同时”执行是线程给人的感觉,在线程之间实际上是轮换执行。 二、Java中的线程创建多线程的两种方式:继承Thread类和实现Runnable接口。 一个Thread类实例只是一个对象,像J. 阅读全文
posted @ 2013-07-23 11:37 Ruthless 阅读(4715) 评论(0) 推荐(1) 编辑
  2013年7月22日
摘要: Java多线程编程总结 阅读全文
posted @ 2013-07-22 11:37 Ruthless 阅读(1565) 评论(0) 推荐(0) 编辑
摘要: 1、RAM和ROM区别RAM-RamdomAccessMemory随机存取存储器(断电后数据会丢失),高速存取,读写时间相等,且与地址无关,如计算机内存等。 ROM-Read Only Memory只读存储器。断电后信息不丢失,如计算机启动用的BIOS芯片。存取速度很低,(较RAM而言)且不能改写。由于不能改写信息,不能升级,现已很少使用。2、栈(stack)与堆(heap)都是Java用来在RAM中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。3、栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的 阅读全文
posted @ 2013-07-22 09:25 Ruthless 阅读(3168) 评论(0) 推荐(1) 编辑
  2013年7月18日
摘要: 多线程、集合、网络编程、内存优化、缓冲、、spring、设计模式、软件工程、编程思想1、生成对象时,合理分配空间和大小new ArrayList(100);2、优化for循环Vector vect = new Vector(1000);for( inti=0; i<vect.size(); i++){ ...}for循环部分改写成:int size = vect.size();for( int i=0; i>size; i++){ ...} 如果size=1000,就可以减少1000次size()的系统调用开销,避免了循环体重复调用。3、new一个实例对象,new在什么位置(尽量在使用时再.. 阅读全文
posted @ 2013-07-18 22:03 Ruthless 阅读(9829) 评论(0) 推荐(3) 编辑
  2013年7月16日
摘要: 1、概念BSON(Binary Serialized Document Format)是一种类json的一种二进制形式的存储格式,简称Binary JSON,它和JSON一样,支持内嵌的文档对象和数组对象,但是BSON有JSON没有的一些数据类型,如Date和BinData类型。BSON可以做为网络数据交换的一种存储形式,这个有点类似于Google的Protocol Buffer,但是BSON是一种schema-less的存储形式,它的优点是灵活性高,但它的缺点是空间利用率不是很理想。BSON有三个特点:轻量性、可遍历性、高效性。{“hello":"world"} 阅读全文
posted @ 2013-07-16 09:44 Ruthless 阅读(4214) 评论(0) 推荐(0) 编辑
摘要: 由于工作需要读取局域网中一台机器的共享目录中的文件,需要jcifs-1.1.11.jar的支持,使用SMB协议,以下是实现了远程读取文件的功能:package junit;import jcifs.smb.SmbFile;/** * java访问共享目录 * * @author 林计钦 * @version 1.0 2013-7-16 上午09:18:38 */public class SmbTest { public static void main(String[] args) throws Exception { //smb://xxx:xxx@192.1... 阅读全文
posted @ 2013-07-16 09:39 Ruthless 阅读(16033) 评论(0) 推荐(1) 编辑
  2013年7月15日
摘要: 1、简介MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。2、特点它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:*面向集合存储,易存储对象类型的数据。*模 阅读全文
posted @ 2013-07-15 22:25 Ruthless 阅读(1314) 评论(0) 推荐(0) 编辑
摘要: 1、下载地址:http://www.mongodb.org/downloads(32位还是64位自行选择)。我下载的是:mongodb-win32-x86_64-2.4.5.zip 2、解压把mongodb-win32-x86_64-2.4.5.zip放到某个位置,解压。我放的是D:\dev目录。解压后的路径为D:\dev\mongodb-win32-x86_64-2.4.53. 安装准备MongoDB默认的数据目录为:C:\data\db。如果不用默认目录,则需要在在mongod.exe命令后加--dbpath参数。创建数据目录。我创建的是D:\dev\mongodb-win32-x86_6 阅读全文
posted @ 2013-07-15 21:47 Ruthless 阅读(33802) 评论(0) 推荐(4) 编辑
  2013年7月9日
摘要: 了解Quartz体系结构Quartz对任务调度的领域问题进行了高度的抽象,提出了调度器、任务和触发器这3个核心的概念,并在org.quartz通过接口和类对重要的这些核心概念进行描述:●Job:是一个接口,只有一个方法void execute(JobExecutionContext context),开发者实现该接口定义运行任务,JobExecutionContext类提供了调度上下文的各种信息。Job运行时的信息保存在JobDataMap实例中;●JobDetail:Quartz在每次执行Job时,都重新创建一个Job实例,所以它不直接接受一个Job的实例,相反它接收一个Job实现类,以便运 阅读全文
posted @ 2013-07-09 10:38 Ruthless 阅读(7647) 评论(1) 推荐(1) 编辑
  2013年7月8日
摘要: Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式:Seconds Minutes Hours DayofMonth Month DayofWeek Year或 Seconds Minutes Hours DayofMonth Month DayofWeek 每一个域可出现的字符如下: Seconds:可出现", - * /"四个字符,有效范围为0-59的整数 Minutes:可出现", - * /"四个字符,有效范围为0-59的整数 Hours:可出现", - * /&quo 阅读全文
posted @ 2013-07-08 17:40 Ruthless 阅读(278634) 评论(15) 推荐(26) 编辑
  2013年7月3日
摘要: 一般单个工程,在没有应用别人的jar包时导出为jar很简单,只要设置一个Main-Class就行了,也就是选择程序入口(main所在类)。但是涉及到了数据库或需要用到第三方的JAR,就需要用到相应的数据库驱动jar包等等,在打成jar包时会发现,数据库驱动jar包根本没有引入到自己导出的jar包中(可以通过winrar打开查看jar包中都有什么文件),可以采用fat插件进行jar打包。myeclipse安装fat插件解压缩后在plugins中有一个jar文件,(net.sf.fjep.fatjar_0.0.31.jar),把这个jar文件拷贝myeclipse下的plugins下,重新启动my 阅读全文
posted @ 2013-07-03 10:50 Ruthless 阅读(3986) 评论(0) 推荐(0) 编辑
上一页 1 ··· 43 44 45 46 47 48 49 50 51 ··· 68 下一页