------- android培训、java培训、期待与您交流! ----------
一.进程:
1.什么是进程:进程是操作系统的概念,它就是指在操作系统中运行的某个程序;
每个程序对于操作系统来说都是一个独立的进程,由操作系统管理,分配内存、CPU执行时间.....
2.什么是多进程:是指操作系统可以同时管理多个应用程序的同时运行;
3.多进程的意义:可以充分利用CPU资源;可以使用户有更好的操作体验,可以同时运行多个程序;
二.线程:
1.什么是线程:线程是指在一个"主进程"中,可以使某段代码以独立于主进程的方式运行。
线程中的代码,与主进程中的代码同时抢占操作系统资源;
2.什么是多线程:多线程是指,一个主进程可以启动多个线程,去独立运行。
3.多线程的意义:多线程也可以充分利用CPU资源;可以使我们的几段代码"同时"运行,提高我们的代码效率;
三.并行和并发:
1.并行:是指多个线程在"某个时间段内"同时运行;
2.并发:是指多个线程在"某个时间点上"同时的访问同一资源;
四.线程:
1.线程的实现方式:
1).实现方式一:
1.继承Thread类;
2.重写run()方法;
3.启动线程:
1).实例化自定义对象;
2).调用start()启动线程;
2).实现方式二:
1.实现Runnable接口;
2.重写run()方法;
3.启动线程:
1).实例化自定义对象;
2).实例化Thread对象,并传递自定义对象;
3).调用Thread的start()方法;
3).实现方式三:(JDK5)后
1.自定义类,并实现Callable接口
2.重写call()方法;
3.使用"线程池"的方式启动线程;
方法:
1).线程名称:
setName(String n):设置线程名称:
getName():获取线程名称;
2).线程优先级:低-->高:1--10。默认:5
setPriority(int n):设置优先级。如果不在1--10的范围内,则抛出异常;
getPriority():获取线程的优先级;
3).线程休眠:
sleep(int n):静态方法。单位:毫秒;
4).线程的加入:
join():普通方法。其它线程会等待此线程执行完毕再执行;
5).线程的礼让:
yield():静态方法。退回到"就绪"状态。很可能会被操作系统再次分配运行;
6).守护线程:
setDaemon(boolean n):如果true,则为"守护线程"。当主线程结束时,守护线程也会跟着结束(但不会立即结束,会有个小缓冲)
7).线程的中断:
stop():不建议使用。
interrupt():在线程内部,当处于以下三种情况:
Object-->wait():
Thread-->join():
Thread-->sleep():
会触发一个异常的产生;
3.线程的声明周期:
创建--》就绪--》运行--》死亡;
面试题:当一个线程start()后,线程会立即被执行?
错误!
4.同步:
1).同步代码块:
synchronized(被锁的对象){
}
2).同步方法:
public synchronized void show(){
}
A.静态方法内,可以包含"同步代码块",但被锁的对象不能使用this,一般是使用此类的Class对象;
B.静态方法,可以被声明为"同步方法
JDK5的Lock锁:
Lock l = ...;
l.lock(); //加锁
try{
//同步的代码
}finally{
l.unlock();//释放锁
}
五.死锁的问题:两个自定义类互相限制进程。
六.生产者和消费者:等待和唤醒机制:
等待:Object-->wait();
唤醒:Object-->notify()或者notifyAll()
注意:课堂的例子只是:单生产和单消费的情况;
七.线程组:
1.所有线程,默认情况下都属于:main线程组;
2.设定线程组:ThreadGroup,Thread的构造方法;
3.可以统一对线程组内的所有线程进行操作:停止线程;
八.线程池:JDK5
1.获取线程池:
Executors中的静态方法:
public static ExecutorService newCachedThreadPool()
public static ExecutorService newFixedThreadPool(int nThreads)
public static ExecutorService newSingleThreadExecutor()
2.ExecutorService中的方法:
Future<?> submit(Runnable task):执行线程,并获取返回值;
<T> Future<T> submit(Callable<T> task)
九.定时器:
1.TimerTask(抽象类):定义任务
2.Timer(类):设定"定时器"
十.设计模式:
1.简单工厂模式:
2.工厂方法模式:
3.单例模式:
1).饿汉式
package cn.itcast.demo17_单例模式_饿汉式;
public class Student {
private static Student stu = new Student();
private Student(){
}
public static Student getInstance(){
return stu;
}
}
2).懒汉式;
package cn.itcast.demo17_单例模式_懒汉式;
public class Student {
private static Student stu;
private Student(){
}
public static synchronized Student getInstance(){
if(stu == null){
stu = new Student();
}
return stu;
}
}
懒汉式在方法被调用时才创建一个新的空间,和饿汉式仅仅区别在这里。