多线程与锁(1)
-
线程与进程
- 进程
- 计算机系统程序运行的基本单位
- 线程
- 多个线程可以存活在一个进程里面,执行相同的任务,提高程序效率和cpu利用率.
- java多线程通过抢占cpu资源实现
- 线程与进程的区别,关联,优缺点
- 区别
- ⼀个进程中可以有多个线程,多个线程共享进程的堆和⽅法区 (JDK1.8 之后的元空间)资源,但是每个线程有⾃⼰的程序计数器、虚拟机栈 和 本地⽅法栈。
- 总结
- 线程 是 进程 划分成的更⼩的运⾏单位。线程和进程最⼤的不同在于基本上各进程是独⽴的,⽽各线程则不⼀定,因为同⼀进程中的线程极有可能会相互影响。线程执⾏开销⼩,但不利于资源的管理和保护;⽽进程正相反
- 区别
- 进程
-
⼀句话简单了解堆和⽅法区
- 堆和⽅法区是所有线程共享的资源,其中堆是进程中最⼤的⼀块内存,主要⽤于存放新创建的对象 (所有对象都在这⾥分配内存),⽅法区主要⽤于存放已被加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。
-
并行与并发
- 并行
- 同一时间内,多个任务都在执行
- 并发
- 单位时间内,多个任务都在执行,交替执行,不是同时.
- 并行
-
线程的生命周期和状态
- 状态
- NEW 初始状态
- RUNNABLE 运行状态
- BLOCKED 阻塞状态 阻塞于锁
- WAITING 等待状态 等待别的线程通知或打断
- TIMED_WAITING 限时等待状态
- TERMINATED 终止状态
- 生命周期
- 状态
-
实现多线程编程
-
继承Thread类
-
class MyThread extends Thread{ @Override public void run(){ //实际运行代码 } } Mythread mythread=new Mythread(); mythread.start();
-
-
实现Runnable接口
-
Runnable myRunnable = new Runnable(){ @Override public void run(){ //实际运行代码 } }; myRunnable.run();
-
-
实现Callable接口+线程池
- 后续细说
-
-
线程池