
线程
文章平均质量分 75
爱上一个程序员
。。。。。
展开
-
线程池和ThreadPoolExecutor类
线程池背景:如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结 束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。线程池:为了减少频繁创建(时间短,任务简单)销毁线程开销,Jdk以后内置了线程池。操作:可以使用线程池序言创建一部分线程,重复使用,减少创建销毁线程的开销。在 JDK5 版本中增加了内置线程池实现 ThreadPoolExecutor,同时提供了Executors 来创建不同类型的线程池。ThreadPoolExecutor 类[外链原创 2021-07-22 20:30:58 · 197 阅读 · 0 评论 -
ThreadLocal
ThreadLocal线程封闭对象封闭在一个线程里,即使这个对象不是线程安全的,也不会出现并发安全问题栈封闭:就是用栈(stack)来保证线程安全public void testThread() { StringBuilder s = new StringBuilder(); s.append("Hello"); }StringBuilder 是线程不安全的,但是它只是个局部变量,局部变量存储在虚拟机栈,虚拟机栈是线程隔离的,所以不会有线程安全问题.ThreadLocal 线程封原创 2021-07-22 20:28:33 · 168 阅读 · 0 评论 -
线程通信(生产者消费者问题)
线程通信(生产者消费者问题)**线程通讯指的是:**多个线程通过消息传递实现相互牵制,相互调度,即线程间的相互作用。涉及三个方法:.wait一旦执行此方法,当前线程就进入阻塞状态,并释放同步监视器(锁)。.notify一旦执行此方法,**就会唤醒被wait的一个线程。**如果有多个线程被wait,就唤醒优先级高的那个。.notifyAll一旦执行此方法,就会唤醒所有被wait的线程。说明:.wait(),notify(),notifyAll()三个方法必须使用在同步代码块或同步方法中。.wa原创 2021-01-21 12:37:42 · 161 阅读 · 0 评论 -
实现多线程同步Lock锁与 synchronized 同步监视器的区别`
实现多线程同步Lock锁与 synchronized 同步监视器的区别`线程同步的关键:确保一个时间点只有一个线程访问共享资源。可以给共享资源加一把锁,哪个线程获取了这把锁,才有权利访问该共享资源。1.同步监视器同步监视器可以是任何对象,必须唯一,保证多个线程获得是同一个对象(锁).同步监视器的执行过程1.第一个线程访问,锁定同步监视器,执行其中代码.2.第二个线程访问,发现同步监视器被锁定,无法访问.3.第一个线程访问完毕,解锁同步监视器.4.第二个线程访问,发现同步监视器没有锁,然后锁原创 2021-01-21 10:48:49 · 581 阅读 · 0 评论 -
线程状态(生命周期)与线程同步
线程状态(生命周期)与线程同步一.线程的状态线程的状态:新建:当一个Thread类或其子类的对象被声明并创建时,新生的线程对象处于新建状态就绪:处于新建状态的线程调用start()后,将进入线程队列等待CPU时间片,此时它已具备了运行的条件,只是没分配到CPU资源运行:当就绪的线程被调度并获得CPU资源时,便进入运行状态,run()方法定义了线程的操作和功能,但不可直接调用run方法阻塞:在某种特殊情况下,被人为挂起或执行输入输出操作时,让出CPU并临时中止自己的执行,进入阻塞状态死亡:线原创 2021-01-21 10:06:19 · 193 阅读 · 0 评论 -
Java线程的基本认识
Java线程1.程序,进程,线程程序(静态):为完成某种功能,使用某种计算机汇编语言编写的一组指令集合,即一段静态的代码块进程(动态):正在运行的程序,进程中含有内存和资源并具有安置线程的位置线程(动态):进程可进一步细化为线程,是一个进程内部的最小执行单元2.进程与线程关系一个进程可以包含多个线程,一个线程只属于一个进程,线程不能脱离进程独立存在一个进程至少包含一个线程(成为主线程)在主线程中可以创建并启动多个线程一个进程中的资源被所有线程共享3.什么是多线程,及其功能多线程是指一原创 2021-01-18 14:21:38 · 152 阅读 · 0 评论 -
Java线程的创建
Java线程的创建方式一:继承Thread类在Java中要实现线程,最简单的方式就是扩展Thread类,重写其中的run方法,方法原型如下:Thread类中的run方法本身并不执行任何操作,如果我们重写了run方法,当线程启动时,它将执行run方法。//线程创建方式一:继承Thread类public class ThreadDemo extends Thread { //重写run方法 //并将线程组需要执行的任务写在run方法里面 @Overrid原创 2021-01-18 14:43:50 · 140 阅读 · 0 评论