多线程
qq_39932502
这个作者很懒,什么都没留下…
展开
-
044_创建线程池有哪几种方式?
newFixedThreadPool(int nThreads)创建一个固定长度的线程池,每当提交一个任务就创建一个线程,直到达到线程池的最大数量,这时线程规模将不再变化,当线程发生未预期的错误而结束时,线程池会补充一个新的线程。newCachedThreadPool()创建一个可缓存的线程池,如果线程池的规模超过了处理需求,将自动回收空闲线程,而当需求增加时,则可以自动添加新线程,...原创 2020-04-23 17:15:25 · 356 阅读 · 0 评论 -
043_线程的 run() 和 start() 有什么区别?
每个线程都是通过某个特定 Thread 对象所对应的方法 run() 来完成其操作的,方法 run() 称为线程体。通过调用 Thread 类的 start() 方法来启动一个线程。start() 方法来启动一个线程,真正实现了多线程运行。这时无需等待 run() 方法体代码执行完毕,可以直接继续执行下面的代码; 这时此线程是处于就绪状态, 并没有运行。 然后通过此 Thread 类调用方法...原创 2020-04-23 17:09:20 · 458 阅读 · 0 评论 -
042_notify() 和 notifyAll() 有什么区别?
如果线程调用了对象的 wait() 方法,那么线程便会处于该对象的等待池中,等待池中的线程不会去竞争该对象的锁。当有线程调用了对象的 notifyAll() 方法 (唤醒所有 wait 线程) 或 notify() 方法 (只随机唤醒一个 wait 线程) ,被唤醒的的线程便会进入该对象的锁池中,锁池中的线程会去竞争该对象锁。也就是说,调用了 notify() 后只有一个线程会由等待池进入锁池...原创 2020-04-23 16:55:54 · 447 阅读 · 0 评论 -
041_sleep() 和 wait() 有什么区别?
sleep():sleep() 是线程类(Thread)的静态方法,让调用线程进入睡眠状态,让出执行机会给其他线程,等到休眠时间结束后,线程进入就绪状态和其他线程一起竞争cpu的执行时间。因为sleep() 是 static 静态的方法,他不能改变对象的机锁,当一个synchronized块中调用了 sleep() 方法,线程虽然进入休眠,但是对象的机锁没有被释放,其他线程依然无法访问这个对象。...原创 2020-04-23 16:48:50 · 116 阅读 · 0 评论 -
040_线程有哪些状态?
线程通常都有五种状态,创建、就绪、运行、阻塞和死亡。创建状态:在生成线程对象,并没有调用该对象的start方法,这是线程处于创建状态。就绪状态:当调用了线程对象的start方法之后,该线程就进入了就绪状态,但是此时线程调度程序还没有把该线程设置为当前线程,此时处于就绪状态。在线程运行之后,从等待或者睡眠中回来之后,也会处于就绪状态。运行状态:线程调度程序将处于就绪状态的线程设置为...原创 2020-04-23 16:43:49 · 85 阅读 · 0 评论 -
039_说一下 Runnable 和 Callable 有什么区别?
Runnable接口中的run()方法的返回值是void,它做的事情只是纯粹地去执行run()方法中的代码而已;Callable接口中的call()方法是有返回值的,是一个泛型,和Future、FutureTask配合可以用来获取异步执行的结果。...原创 2020-04-23 16:36:26 · 484 阅读 · 0 评论 -
038_创建线程有哪几种方式?
Java中创建线程主要有三种方式:继承Thread类创建线程类(1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。因此把run()方法称为执行体。(2)创建Thread子类的实例,即创建了线程对象。(3)调用线程对象的start()方法来启动该线程。通过Runnable接口创建线程类(1)定义runnable接口的实现类,并重写该接口...原创 2020-04-23 16:31:23 · 148 阅读 · 0 评论 -
037_守护线程是什么?
守护线程 ( 即daemon thread ) ,是个服务线程,准确地来说就是服务其他的线程,这是它的作用——而其他的线程只有一种,那就是用户线程。所以java里线程分2种:守护线程,比如垃圾回收线程,就是最典型的守护线程。用户线程,就是应用程序里的自定义线程。...原创 2020-04-23 12:11:29 · 141 阅读 · 0 评论 -
036_线程与进程的区别?
进程是资源分配的最小单位,线程是程序执行的最小单位。进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段,这种操作非常昂贵。而线程是共享进程中的数据的,使用相同的地址空间,因此CPU切换一个线程的花费远比进程要小很多,同时创建一个线程的开销也比进程要小很多。线程之间的通信更方便,同一进程下的线程共享全局变量、静态变量等数据,而进程之间的通...原创 2020-04-22 23:45:18 · 96 阅读 · 0 评论 -
035_并行与并发有什么区别?
并行:多个处理器或多核处理器同时处理多个任务。并发:多个任务在同一个 CPU 核上,按细分的时间片轮流(交替)执行,从逻辑上来看那些任务是同时执行。...原创 2020-04-22 23:33:50 · 132 阅读 · 0 评论