- 并发(concurrency):是一个系统属性,指的是算法程序。强调的是发生在同一时间范围内,(交替发生)(类似于操作系统中的时间片段轮换算法),主要是使用时间片进行运行。
- 并行(qrallelism):强调发生在同一时间点。
- 并行是一种并发,但并发不一定是并行。
- 多线程是解决并发问题的一种方式
- 一个进程一定带一个主线程,进程是占用资源的最小单位。线程不单独占用资源,在执行任务的时候会占用cpu,但执行完后就会释放。线程会共享主线程的资源
- 线程两种类型:用户线程和守护线程
- 线程实际是由操作系统调用、管理、执行。JVM不能管理线程的执行
- java支持多接口,不支持多继承
- 如果多功能,则实现Runnable
- 单功能,继承Thread.
- join方法用于暂停当前进程直到指定进程结束。
- 当主进程结束时,JVM就会强制结束守护进程。
- 线程安全是由于线程间共享资源管理不当导致的数据不一致问题。是因为更新字段不是原子操作。
- 死锁:
- 避免死锁的方法:
- 避免嵌套锁
- 按需取锁:只申请当前工作锁
- 避免无限等待:限定线程死锁时间
- 避免死锁的方法:
- ------Synchronized--------同步锁
- 锁静态方法 ---会有安全威胁
- 锁对象 ----会有安全威胁
- 锁实例方法 eg:public final Object mutex = new Object(); Synchronized(mutex){}
- Executor是一个接口,它代表执行给定任务的对象。
- ExecutorService 是一个完整的异步处理解决方案,他管理内存队列,并且基于线程可用性调度提交的任务
- JVM默认线程是1M
- 三种非阻塞方法
- Lock.lock(); ****** Lock.unlock(); 中间的部分只能有一个线程可以操作
Java并发和并行 安全
最新推荐文章于 2024-04-08 08:00:00 发布