day11
★01 多线程;
进程:是一个正在执行中的程序。
每一个进程执行都有一个执行顺序。该顺序是一个执行路径。
或者叫一个控制单元。
线程:就是进程中的一个独立的控制单元
线程在控制着进程的执行。
一个进程中至少有一个线程。
java的编译、运行进程。
java VM 启动的时候会有一个进程java.exe
而且这个线程运行的代码存在于
★02
异常:Exception
线程:Thread
面试考点:
start是调用的底层,让控制单元去执行的一个动作。
rund 的功能仅仅是封装线程要运行的代码。
★05
线程被创建:
new thread 或创建thread的子类。
sleep
wait()
notify();
stop(); 消亡
run方法结束。
没有执行资格的,冻结状态。(冻结分两:睡眠,等待)
有执行资格的,临时状态
运行状态,有资格,又有执行权的状态。
★06
父类描述完了一个私有的name,并通过set get方法,构造函数对它进行访问。
Thread.currentThread
this.getName
★07
让四个对象共享100张票。
runnable 可运行的。
真正创建线程,是Thread或Thread子类对象。
EditPlus 快速复制上一行的代码到下一行。ctrl+J
调用的是Thread类中run方法。该方法中没有卖票代码。
在创建线程对象时,就要明确要运行什么代码。
面试:
继承和实现方法开启线程的区别是?
★09
★11 12 13 14
★15
同步的弊端:
死锁;此现象产生后,程序不动。
同步中嵌套同步,而锁却不同。
面试:请写一个死锁程序。
这个程序要作掌握。
day12
★01 多线程间的通信
单例:操作同一个资源。
静态,不建议使用,清不掉,变成对象还可以清理掉。
加了同步后还不安全,想前提。
★03 等待唤醒机制。
notifyAll();全部唤醒。
wait();
notify();
用在同步当中。
将wait notify 操作线程的方法定义在了object当中,因为,锁是任意对象,不写r也可以,任意对象可以调用的方法,定义在上帝里面。
只有同步才会有锁,
★04 代码优化
★05生产消费程序;
★06
jdk1.4 1.5(5.0)
6.0 7.0
private Lock lock = new ReentrantLock();
private Condition con = lock.newCondition();
lock.lock();
finally
lock.unlock();
private boolean flag = false;
private int count=1;
private String name;\
conditon.await();
condition.signal();
★07 停止线程。
Interrupted 将处于冻结状态的线程,强制回复到运行状态中来,只有回复到运行状态,才可继续读标记。
★08
★09join 方法
day13
★01 String 类
Thread Runnable 接口
public final class String
不能有子类。
String s = new String();
Sring s1="";
是一样的。
字符串其实在内存里面有个常量池,存放abc这样的字符,存在数组当中。拼成一个新的字符串对象。
字符串的比较有自己的独特方式(equals)
★02
静态区,常量池,方法区
拒绝回答的sop是怎么来的?为什么我的代码运行不了。
boolean startsWith(str);
boolean endsWith(str);
boolean isEmpty():原理就是判断长度是否为0,为0则true
boolean contains(str):判断字符串是否包含。
★04 常见功能,切割和替换。
如果要替换的字符不存在,返回的还是原串。
★05 转换
1 ——49
sop(s1.compareTo(s2)); 0 整数,负数。
全变小写,再进行字符串的比较。
★06
while(s.charAt(pos)=='-')
pos++;
int x = s.length()-1;
while(s.charAt(x)=='-')
x--;
★08
获取一个字符串在另一个字符串中的个数:
&:以该字符串为分界标,将另一个字符串分为若干数组,统计数组个数可得?为什么不行?
&indexOf,如何利用手册快速查找某一个方法的使用规范?
字段摘要
构造方法摘要
方法摘要
?打印出indexOf(key)的值。
★10
方法调用链
方法返回的还是本类对象,可以继续调用本类方法。
StringBuffer sb = new StringBuffer("abcde")
sb.replace(1,4,"java");
sb.setCharAt(3,'k');
★12 StringBuilder
多线程用 StringBuffer
单线程用 StringBuilder
java升级的三个因素:
提高效率
简化书写
提高安全性
★13
Integer i = new Integer("123);
int num = i.intValue();
★14
Integer 特性:
-128——127 byte
如果在此范围内,则不会重新开辟内存空间。如果是128,则重新开辟空间,指向了不同对象,所以==比较结果为false。