多线程
在单个程序中同时运行多个线程完成不同的工作,称为多线程(提升整体处理性能)
线程是程序的最小单位,相对独立的可调用单元,是 CPU 最小基本单位;
在同一个程序中不同的线程完成功能,称为多线程。(软件中最小单位就是线程)
程序 进程 线程 程序就是一段静态的代码,是应用程序的蓝本 进程是正在运行的程序的实例:进程是程序的一次正常运行,从代码加载到最后一句代码的执行,整个过程就是进程的生命周期 进程中独立、可调用的最小执行单元:线程是程序中一个单一的顺序控制流程
- 程序与进程的关系:
一个程序一般只有一个进程,但一个程序可以拥有多个进程
一个进程只能属于一个程序 - 进程与线程的关系:
一个进程拥有多个线程,一个线程只能属于一个进程
一个程序只有一个主线程
一个程序只有一个主线程:Java 应用程序中主线程就是
main
方法,其他的都是子线程
使用 Runnable 接口创建的线程,还是要借用 Thread 类来启动线程
当一个线程对象在 sleep 的时候,可以用过 interrupt()
方法强制唤醒,唤醒后会抛出 java.lang.InterruptedException
方法 描述 start() 启动线程(使线程处于就绪状态) run() 线程占用CPU正在运行,业务逻辑写在此方法中 setName() 给线程设置名称 getName() 获取线程名称 setPriority() 设置线程的优先级别:1为最小、5为默认、10为最大 getPriority() 获取线程的优先级 currentThread() 获取当前正在运行的线程 getState() 获取线程状态 sleep() 线程的休眠 interrupt() 线程中断休眠 isInterrupted() 判断线程是否为中断状态 isAlive() 测试线程是否处于活动状态 setDaemon() 把线程设置为守护线程(当程序中其他守护线程结束时,该守护线程也会结束) isDaemon() 判断线程是否为守护线程 join() 等待该线程终止 yield() 暂停当前正在执行的线程,并执行其他线程(包含了自己本身)
wait()
:线程挂起
notify()
:唤醒单个线程
notifyAll()
:唤醒所有线程
wait()
方法不稳定必须要加上同步锁
以上三个方法全是 Object 类的方法
作用 优点 缺点 始终保持一个实例 节约内存空间,创建效率高 容易造成线程不安全问题
枚举是 Java 中一种数据类型,相当于常量,但比常量的扩展性强
枚举类型存放在 JVM 的常量池中,永远不会被回收,除非程序关闭
枚举默认是单例,所以构造方法必须私有化
声明枚举的时候,必须固定好实例,枚举的实例必须事先声明
public enum 枚举名称{}
Timer:定时器
TimerTask:定时器任务
线程安全 线程不安全 StringBuffer StringBuilder Vector ArrayList HashTable HashMap
什么样的数据适合放在缓存机制中?
- 经常被查询的数据
- 不会经常改变的数据,更新的频率不频繁
Original: https://www.cnblogs.com/xiqingbo/p/java-20.html
Author: Schieber
Title: Java 多线程学习笔记
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/598698/
转载文章受原作者版权保护。转载请注明原作者出处!