一、进程
1.是程序关于某个数据集合的执行过程
2.有自己的内存空间和系统资源
3.是一个正在运行的程序
二、多进程
1.在一台电脑上可以执行多个任务
2.提高cpu运行效率
三、线程
1.是进程的一条执行路径
2.一个进程中可以有多个线程
3.生命周期:
创建:仅仅初始化对象,没有线程特征
就绪:当调用start(),表示有资格运行但还没有权限运行,取决于jvm调度
运行:有资格运行,有权限运行,开始执行run()
阻塞:线程处于无资格无权限运行,当被激活之后处于就绪状态
结束:run()结束或产生异常,变成垃圾被jvm回收线程回收
四、多线程
1.提高程序运行效率
2.线程运行具有随机性(抢占式调度模型)
五、并行与并发
1.并行:是在某一个时间段同时运行程序
2.并发:在某一个时间点同时运行
六、java创建多线程
java不能够直接调用系统函数创建线程,通过调用c/c++程序来创建进程
m1:继承Thread类
//实现thread类
public class Csdn extends Thread{
public static void main(String[] args) {
Csdn csdn=new Csdn();
csdn.start();//调用start方法开启线程,jvm来调用run方法
}
@Override
public void run() {
System.out.println("线程所执行的代码");
}
}
m2:实现runnable接口
public class Csdn implements Runnable {
@Override
public void run() {
System.out.println("线程代码开始了");
}
public static void main(String[] args) {
//创建实现的对象
Csdn csdn=new Csdn();
//创建thread对象
Thread thread=new Thread(csdn);
thread.start();
}
}
七、多线程同步出现的问题
使用
//synchronized关键字
public void run() {
synchronized (new Object()) {
while(true)
if(count>=0){
System.out.println(Thread.currentThread().getName()+":出售1张,还剩"+count--);
}
}
实现同步锁保证,不出现异常。
但是,每次判断会降低效率