
JAVA多线程并发
JAVA多线程并发
叭了个叭叭叭叭叭
比起平凡度日更想带着梦想讴歌感动
展开
-
JAVA NIO
JAVA NIONIO属于多路复用IO模型(详见五种IO模型)。在Java1.4之前的IO系统中,提供的都是面向流的IO,系统一次一个字节地处理数据,一个输入流产生一个字节的数据,一个输出流消费一个字节的数据,因此面向流的I/O速度非常慢。Java 1.4中推出了NIO,这是一个面向块(缓冲区)的IO系统,系统以块的方式处理,每一个操作在一步中产生或者消费一个数据库,大大提高了处理速度。NI...原创 2019-08-29 15:33:49 · 144 阅读 · 0 评论 -
五种IO模型
JAVA IO/NIO一 五种IO模型在网络环境下,可以通俗地将IO分为两步:等数据搬迁五种IO模型之间的区别就主要在于“等”的方式的不同。1 阻塞IO(blocking I/O)当用户线程发出IO请求之后,内核会去查看数据是否就绪,如果没有就绪就会等待数据就绪,而用户线程就会处于阻塞状态,用户线程交出CPU。当数据就绪之后,内核会将数据拷贝到用户线程,并返回结果给线程,用户线...原创 2019-08-26 17:59:59 · 256 阅读 · 0 评论 -
线程池原理
线程池原理线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量超出数量的线程排队等候,等其它线程执行完毕,再从队列中取出任务来执行。它的主要特点为:线程复用、控制最大并发数、管理线程。1 线程复用每一个 Thread 的类都有一个 start 方法。 当调用 start() 启动线程时 Java 虚拟机会调用该类的 run()方法。 那么该类的 run() 方法中就是调用了 Runnable 对象的 run() 方法。我们可以继原创 2020-06-02 15:22:04 · 191 阅读 · 0 评论 -
线程上下文切换
线程上下文切换巧妙地利用了时间片轮转的方式, CPU 给每个任务都服务一定的时间,然后把当前任务的状态保存下来,在加载下一任务的状态后,继续服务下一任务,任务的状态保存及再加载, 这段过程就叫做上下文切换。时间片轮转的方式使多个任务在同一颗 CPU 上执行变成了可能。1 进程进程(也称作任务)是指一个程序运行的实例。在 Linux 系统中,线程就是能并行运行并且与他们的父进程(创建他们的进...原创 2020-05-06 10:47:13 · 424 阅读 · 0 评论 -
线程基本方法
线程基本方法1 线程等待(wait)调用该方法的线程进入 WAITING 状态,只有等待另外线程的通知或被中断才会返回。需要注意的是调用 wait()方法后,会释放对象的锁。因此,wait 方法一般用在同步方法或同步代码块中。2 线程睡眠(sleep)sleep 导致当前线程休眠,与 wait 方法不同的是 sleep 不会释放当前占有的锁,sleep(long)会导致线程进入 TIME...原创 2020-04-26 16:33:31 · 125 阅读 · 0 评论 -
sleep 与 wait,start 与 run 的区别
sleep 与 wait,start 与 run 的区别1 sleep 与 wait 区别sleep() 方法是属于 Thread 类中的。而 wait() 方法是属于 Object 类中的。sleep() 方法导致程序暂停执行指定的时间,让出 cpu给其他线程,但是他的监控状态依然保持着,当指定的时间到了又会自动恢复运行状态,这个过程中,线程不会释放对象锁。而当调用 wait() 方法,...原创 2020-04-23 19:35:05 · 579 阅读 · 0 评论 -
终止线程4种方式
终止线程4种方式1 正常运行结束程序运行结束,线程自动结束。2 使用退出标志退出线程一般 run()方法执行完,线程就会正常结束。然而,常常有些线程是伺服线程,它们需要长时间的运行,只有在外部某些条件满足的情况下,才能关闭这些线程。可以使用一个变量来控制循环,例如,最直接的方法就是设一个 boolean 类型的标志,并通过设置这个标志为 true 或 false 来控制 while 循环...原创 2020-04-23 19:19:10 · 270 阅读 · 0 评论 -
线程生命周期
线程生命周期当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。在线程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Dead)5 种状态。尤其是当线程启动以后,它不可能一直"霸占"着 CPU 独自运行,所以 CPU 需要在多条线程之间切换,于是线程状态也会多次在运行、阻塞之间切换。1 新建状态(...原创 2020-04-22 20:18:32 · 133 阅读 · 0 评论 -
4种线程池
4种线程池1 newCachedThreadPool创建一个可根据需要创建新线程的线程池,但是在以前构造的线程可用时将重用它们。对于执行很多短期异步任务的程序而言,这些线程池通常可提高程序性能。调用 execute 将重用以前构造的线程(如果线程可用)。如果现有线程没有可用的,则创建一个新线程并添加到池中。终止并从缓存中移除那些已有 60 秒钟未被使用的线程。因此,长时间保持空闲的线程池不会使...原创 2020-04-22 20:01:38 · 115 阅读 · 0 评论 -
Java线程创建方式
JAVA 线程实现 / 创建方式1 继承 Thread 类Thread 类本质上是实现了 Runnable 接口的一个实例,代表一个线程的实例。启动线程的唯一方法就是通过 Thread 类的 start()实例方法。start()方法是一个 native 方法,它将启动一个新线程,并执行 run()方法。public class MyThread extends Thread { publ...原创 2020-04-22 19:42:16 · 97 阅读 · 0 评论