摘要:
有三个线程,分别为A、B、C线程,需要线程交替打印:ABCABCABC...打印10次。 首先创建一个一个线程间通讯的类: class Opt { //下一个执行的编号 private Integer nextInde; public Integer getNextInde() { return n 阅读全文
摘要:
此时有这样一棵树,其先序遍历:ABCDEFGH;中序遍历:CBEDFAGH;后序遍历:CEFDBHGA;想要以输入结点的方式来创建树。可以考虑一个节点创建成功在创建其左右结点,若其左右结点为空,则返回至上一个结点继续创建,直到创建完毕。 创建树的结点: class BNode{ private BN 阅读全文
摘要:
public class Search { public static void main(String[] args) { int[] arr = {1,3,5,6,8,10,13,19,22}; int i = funSearch(arr,arr.length,80); System.out.p 阅读全文
摘要:
一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根结点加上两棵分别称为左子树和右子树的、互不相交的二叉树组成。 二叉树性质: 若二叉树的层次从0开始,则在二叉树的第i层最多有2^i 个结点。(i>= 0) (证明用数学归纳法)。 高度为k的二叉树最多有2^(k+1)-1个结点。 (k>= 阅读全文
摘要:
1.树的定义: 树是由n (n>= 0)个结点组成的有限集合。如果 n=0 ,称为空树;如果 n>0,则 有一个特定的称之为根(root)的结点, 它只有直接后继,但没有直接前驱; 除根以外的其它结点划分为m (m >= 0)个互不相交的有限集合TO, T1, .... ..,Tm-1, 每个集合又 阅读全文
摘要:
同步条件:等待池序列,锁机制。 锁池:获取同一把锁的线程,在为抢夺锁时会进入到锁池 等待池:调用wait操作的线程,会释放掉锁,进入到该对象的等待池中。 notify和nitifyAll的区别: notify唤醒的是对象等待池中的一个线程,这个线程会进入到blocked状态,也叫做进入锁池中,等待获 阅读全文
摘要:
首先看看如下代码以及结果:(计算一秒钟内count++的结果) public class VolatileDemo { private static Boolean flag = true; //创建一个状态变量flag public static void main(String[] args) 阅读全文
摘要:
指的是多个线程操作同一个资源,多线程来交替的操作同一个资源(CPU,内存资源)。 临界资源和临界区: 临界资源:一个时刻只允许一个线程访问,一个线程在访问临界资源时,其他线程是不能访问的,临界资源是不可剥夺资源,OS不能阻止资源的独享行为。 临界区:是一个线程中访问临界资源的代码片段。 临界区的使用 阅读全文
摘要:
过程: 发现无用对象(无任何变量引用该对象) 回收无用对象所占的内存空间 分代机制: 分代垃圾回收机制,是基于这样一个事实: 不同的对象的生命周期是不一样的。因此,不同生命周期的对象可以采取不同的回收算法,以便提高回收效率.我们将对象分为三种状态:年轻代,年老代,持久代。同时,将处于不同状态的对象放 阅读全文
摘要:
示例:输入: 38输出: 2解释:各位相加的过程为:3 + 8= 11, 1 + 1=2。由于2是一位数,所以返回2。可以先将输入的数的各个位数字进行相加,然后对其结果再进行像初始输入的数的一样的操作,直到最后各个位的数字的和小于10。 private static int count(int nu 阅读全文