- 浏览: 23275 次
- 性别:
最新评论
-
stevenjohn:
楼主,好文
JAVA线程模型 -
GLC:
操作系统的正好还没考、这个让我好好复习了很多啊。
JAVA线程模型 -
wanghengxian:
somefuture 写道单线程该用双线程后,能节省一半时间吗 ...
Java多线程 -
wanghengxian:
都是来看妹子的吗
Java多线程 -
tingle:
ThreadPoolExecutor这个更好
Java多线程
文章列表
线程模型
一、同步模型
最常见的例子就是银行取款,A,B两个人分别在银行对一个账户进行取款操作,账户仅有1000余额,当同事点击取款1000的按钮时,银行会怎样处理呢?
每个人都查询到了余额1000元没错,即使同时取款,也会有一方不成功的,否则的话,银行会被搞垮的,他才没那么笨,但是这该如何实现呢?
1、synchronized同步关键字
这里涉及到多个线程对共享资源进行处理,这里就必须要给线程“排队”,使用的关键字是synchronized(同步),在程序中,给对共享资源进行处理的代码部分(整个方法或代码块)添加此关键字。相当于给代码块加锁,取得钥匙的线程对资源操作,完成后将钥匙交予其他 ...
哈夫曼与压缩
带权路径长度(WPL):
二叉树的带权(外部)路径长度是树的各叶结点所带的权值wi与该结点到根的路径长度li的乘积之和。
一、哈夫曼树
哈夫曼树又称“最优树”,是带权路径长度达到最小的二叉树。
特点:在哈夫曼树中,权值越大的结点离根越近。
构建哈夫曼树:
1、由给定的n个权值,构造具有n棵二叉树的森林,其中每棵二叉树值有一个带权值的根结点其左右子树为空;
2、重复(直到森林中仅剩下一棵树):
1)在森林中选取两棵根结点权值最小的二叉树,作为左右子树构造一棵新的二叉树。设置新的二叉树的根节点的权值为其左右字数上根节点的权值之和;
2)在 ...
树与二叉树
一、树
树是n(n>=0)个结点的有限集合。如果n=0则称为空树;如果n>0,那么有且仅有一个根结点。树是非线性的结构。
与树相关的基本概念:
1)结点:一个数据元素及指向其子树的分支;
2)结点的度:结点拥有的子树个数;
3)树的度:树中结点的度的最大值;
4)叶结点:度为0的树;
5)子女:结点子树的根;
6)父亲:与子女结点直接联系的子女的上层;
7)兄弟:同一结点的子女;
8)堂兄弟:同层,但为不同结点的子女;
9)结点层次:从根开始,根为第一层,根的子女为第二层,以此类推;
10)树的深度:书中结点的最大层数
11)森林:m(m>=0)棵互不相交的树 ...
链表
链表是一种物理存储单元上非连续非顺序的存储结构。链表有一系列结点组成,每个结点包括两个部分:存储数据元素的数据域,和存储下一个结点地址的指针域(引用)。
链表便于插入和删除操作。
链表的分类:
1、单 ...
多线程
一、
进程:
进程是程序的一次动态执行过程,经历从代码加载、代码执行到执行完毕的一个完整过程。一个应用程序就是一个进程。多进程操作系统能同时运行多个进程(程序),由于CPU具备分时机制,所以每个进程都能循环获得自己的CPU时间片。
线程:
每个Java程序都至少有一个线程——主线程。当一个Java程序启动时,JVM会创建主线程,并且在该线程中调用程序的main()方法。
1、单线程:
之前接触的都是单线程程序,单线程的特点是,被调用的方法执行完毕后当前方法才可能完成,前一个方法完成后才进行下一个方法。这是一种顺序调用。
2、多线程:
当程序同时用多个线程调用不同方法时,并不是像单线程 ...
IO体系结构
Java将输入输出抽象为流,与之相关的类都在java.io包中。
流按方向分为输入流InputStream和输出流OutputStream.程序使用输入流对象从数据源读取数据,使用输出流对象向目的地写出数据。
常用的流有:
基础字节流(原始流):
InputStream,OutputStream(都是抽象类)是java中可以按最小数据单位读取
的流,即每次读写一个字节,基础流是直接连接到输入源的流。
过滤流(节点流):
过滤流是用来包装基础流以提供更好的特性,如提供缓冲功能的
BufferedInputStream和Buffer ...
Java集合框架
Java中集合的定义在java.util包下,主要有三大类:
java.util.Set接口及子类,Set提供的是一个无序、不可重复的集合,常用的实现类有HashSet,TreeSet,LinkedSet
java.util.List接口及子类,List提供的是一个有序、可存重复数据的集合,常用的实现类有ArrayList,Vector,LinkedList
java.util.Map接口及子类,Map提供了一个映射关机的集合,其中key不可重复,value可重复,常用的实现类有HashMap,Hashtable
其他常用的还有:C ...
File类用法
File类是java中与文件操作相关的一个类,它位于java.io包中。
一、几个简单概念
文件类型分为:
目录类型
真实文件,可以没有扩展名。同一目录下不可能存在同名的目录和真实文件
虚拟内存文件(临时文件)
绝对目录——以根目录开头,到指定文件的路径;
相对目录——从当前位置出发,到指定文件的路径。
二、File中的属性、方法及其使用
File类的属性:
public static String pathSeparator
当前操作系统的路径分隔符,Windows中使 ...
Java异常机制
在编译时看似没有错误的代码经常在运行的时候会出现各种各样的错误而导致程序非正常结束,如我们通常遇到的数组下标越界、空指针异常,这些统称为异常。
一、了解异常及异常的类
异常的概念:
导致 ...
数组与队列
一、数组
在java中数组是常用的数据类型,它不属于基本数据类型而是属于引用数据类型。
数组是一个容器,可以存放东西。
特点:1、数组一旦定义,数组长度就不可改变。
...
继承 接口 抽象类
一、继承 extends
当你写一个类时,虽然这个类满足了某些功能但是你又想拓展它的功能,此时你就可以使用继承机制再写一个该类的子类,来完成你需要的功能。继承提高了代码的效率,避免了代码重写。
子类继承父类的属性和方法,而父类的私有属性不能直接访问,而是通过setter或getter方法调用访问。
class Person{
private String name; //私有属性
private ine age; //私有属性
public String getNam ...
类与对象,构造方法
一、类与对象 关系:客观世界中每一个具体的个体都是一个对象,而拥有一些对象的共同基本特征就形成一个个类。例如,张三、李四都是对象,而人类、书包、电脑都是类。类中有属性和方 ...