郑州做网站 熊掌号,wordpress容易优化吗,百度做公司网站需要多少钱,镇江网站建设远航网络1.多线程的一些概念
进程#xff1a;是正在运行的程序 是系统进行资源分配和调用的独立单位 每一个进程都有它自己的内存空间和系统资源。 线程#xff1a;是进程中的单个顺序控制流#xff0c;是一条执行路径。 单线程#xff1a;一个进程如果只有一条执行路径#xff0…1.多线程的一些概念
进程是正在运行的程序 是系统进行资源分配和调用的独立单位 每一个进程都有它自己的内存空间和系统资源。 线程是进程中的单个顺序控制流是一条执行路径。 单线程一个进程如果只有一条执行路径则称为单线程程序。 多线程一个进程如果有多条执行路径则称为多线程程序。 并行多个任务同一时刻进行。 并发多个任务同一时间间隔内进行在一段时间内能够执行多个任务但是这其中的某个时刻只能执行一个任务。
2.多线程的创建和启用
多线程的创建方式继承和实现。 1.继承 Thread 类覆写 run 方法。 2.实现 Runnable 接口覆写 run 方法。
创建线程对象时线程对象是 Thread 类或其子类可以使用多态。 启动线程需要调用线程对象的 start 方法而不是直接使用 run 方法。直接调用 run 方法时只是调用 run 方法并没有启动线程。
3.多线程的优先级和命名
优先级设置需要放在线程启动之前。优先级用 1~10 来表示数字越大优先级越高。 优先级在资源紧张的时候才能体现出来。 相同优先级可使用 yield 方法来让出 CPU 的执行权但是要用在一个线程拥有时间片但是另一个相同优先级的线程没有拿到时间片的情况下。
Thread.currentThread(); 获取当前线程对象可以用来获取 main 中的主线程等。 主线程名为 main 其他线程名为 Thread-1Thread-2… 以此类推。
4.多线程的生命周期
生命周期
阻塞状态结束后回到就绪状态重新排队。 stop 可能会导致死锁一般使用标识符终止线程比如用成员变量 flag 控制何时需要结束进程。
5.多线程的合并
可以使用 join 方法实现线程合并调用 join 方法的对象先执行线程在哪个线程里有对象调用 join 那么这个线程就要等到调用 join 的线程执行结束才可以继续执行。
6.Synchronized
synchronized 使用范围成员方法静态方法语句块。 当某个线程访问某个对象中加了 synchronized 修饰的成员方法时该对象中所有被 synchronized 修饰的成员方法都被锁定。静态方法同理。 给静态方法加锁是类锁给成员方法加锁是对象锁。静态锁只影响静态成员锁影响成员。对象之间互不影响。 可以使用 synchronized 语句块只锁住部分代码不用将整个方法都锁住。
7.Lock
为了更清晰的表达如何加锁和释放锁JDK5 以后提供了一个新的锁对象 Lock 。 Lock 可以获得更广泛的锁定操作。 void lock()获得锁。 void unlock()释放锁。 Lock是接口可以采用实现类ReentrantLock等实例化。 类 ReentrantLock 有一个无参构造方法Lock lock new ReentrantLock();。
8.生产者-消费者10-26补充 如果对您有帮助请点赞关注支持我谢谢❤ 如有错误或者不足之处敬请指正❤