Java多线程
文章平均质量分 56
RecycleBins
这个作者很懒,什么都没留下…
展开
-
Java多线程详解(六)高级主题 1、线程池
六、高级主题(1)线程池JDK5.0提供了线程池相关API:ExecutorService和ExecutorsExecutorService:真正的线程池接口。常见子类ThreadPoolExecutorvoid execute(Runnable command):执行任务/命令,没有返回值,一般用来执行RunnableFuture submit(Callable task):执行任务,有返回值,一般又来执行Callablevoid shutdown():关闭连接池Executors:原创 2021-02-22 23:09:35 · 90 阅读 · 0 评论 -
Java多线程详解(五)线程通信 1、生产者与消费者问题与线程通信的常用方法
Java多线程详解(五)线程通信(1)生产者与消费者问题这是线程通信中最常见的问题,具体不做阐述。解决方式:1、管程法生产者:负责生产数据的模块(可能是方法、对象、线程、进程)消费者:负责处理数据的模块(可能是方法、对象、线程、进程)缓冲区:消费者不能直接使用生产者的数据,他们之间有个“缓冲区”消费者将生产好的数据放入缓冲区,消费者从缓冲区中拿数据。2、信号灯法通过标志位来决定是否唤醒和等待线程。(2)Java线程通信常用的方法方法名作用wait()表示线程原创 2021-02-22 23:07:17 · 124 阅读 · 0 评论 -
Java多线程详解(四)线程同步 4、Lock(锁)
Java多线程详解(四)线程同步(1)并发与三个线程不安全的实例(2)线程同步(3)队列和锁(4)同步方法(synchronized方法和synchronized块)(5)死锁(6)Lock(锁)JDK5.0开始,Java提供了更强大的线程同步机制——通过显式定义同步锁对象来实现同步。同步锁使用Lock对象充当java.util.concurrent.locks.Lock接口是控制多个线程对共享资源进行访问的工具。锁提供了对共享资源的独占访问,每次只能有一个线程对Lock对象加锁,线程开始原创 2021-02-19 16:01:42 · 162 阅读 · 0 评论 -
Java多线程详解(四)线程同步 3、死锁
Java多线程详解(四)线程同步 、(1)并发与三个线程不安全的实例(2)线程同步(3)队列和锁(4)同步方法(synchronized方法和synchronized块)(5)死锁多个线程各自占有一些共享资源,并且都在互相等待其他线程占有的资源才能运行,而导致两个或多个线程都在等待对方释放资源,都停止执行的情形。某一个同步块同时拥有“两个以上对象的锁”时,就可能会发生“死锁”的现象。举例://死锁public class DeadLock { public static voi原创 2021-02-19 15:58:21 · 92 阅读 · 0 评论 -
Java多线程详解(四)线程同步 2、线程同步(synchronized方法和synchronized块)
Java多线程详解 四、线程同步(synchronized方法和synchronized块)(1)、并发与三个线程不安全的实例(2)线程同步现实生活中,我们会遇到“同一个资源,多个人同时都想要使用”的情形,比如食堂的饭菜,最天然的解决方法时排队,这里的队就是队列处理多线程问题时,多个线程访问同一个对象,并且某些线程还想修改这个对象。这时候我们就需要线程同步,线程同步其实是一种等待机制,多个需要同时访问此对象的线程进入这个对象的等待池形成队列,等待前面的线程使用完毕,下一个线程再使用。(3)队列原创 2021-02-19 15:50:37 · 116 阅读 · 0 评论 -
Java多线程详解(四)线程同步 1、并发与三个线程不安全的实例
四、线程同步(1)并发并发:同一个对象被多个线程同时操作,会导致不安全现象的发生三个不安全的示例://1、不安全买票public class UnsafeBuyTicket { public static void main(String[] args) { BuyTicket buyTicket = new BuyTicket(); new Thread(buyTicket,"张三").start(); new Thread(buy原创 2021-02-19 15:40:16 · 120 阅读 · 0 评论 -
Java多线程详解(三)线程状态 5、守护(daemon)线程
(1)线程状态的简要说明(2)线程状态转换过程中常用的方法(3)停止线程(4)线程休眠(5)线程礼让(yield)(6)线程强制执行(join)(7)线程状态观测(8)线程的优先级(9)守护(daemon)线程线程分为用户级线程和守护线程虚拟机必须确保用户现场执行完毕虚拟机不用等待守护线程执行完毕常见的守护线程有后台记录操作日志,监控内存,垃圾回收等待通过thread.setDaemon(true)将线程设置为守护线程public class TestDaemon {原创 2021-02-17 23:19:42 · 201 阅读 · 0 评论 -
Java多线程详解(三)线程状态 4、线程状态观测与线程的优先级
Java多线程详解(三)线程状态(1)线程状态的简要说明(2)线程状态转换过程中常用的方法(3)停止线程(4)线程休眠(5)线程礼让(yield)(6)线程强制执行(join)(7)线程状态的观测线程的几个状态:NEW:尚未启动的线程处于此状态RUNNABLE:再Java虚拟机中执行的线程处于此状态BLOCKED:被阻塞等待监视器锁定的线程处于此状态WAITING:正在等待另一个线程执行动作达到指定等待时间的线程处于此状态TIMED_WAITING:正在等待另一个线程执行动作达到原创 2021-02-17 23:15:43 · 107 阅读 · 0 评论 -
Java多线程详解(三)线程状态 3、线程礼让(yield)与线程强制执行(join)
Java多线程详解(三)线程状态(1)线程状态的简要说明(2)线程状态转换过程中常用的方法(3)停止线程(4)线程休眠(5)线程礼让(yield)礼让线程,让当前正在执行的线程暂停,但不阻塞将线程从运行状态转为就绪状态让CPU重新调度,即重新加入就绪队列,礼让不一定成功,看CPU的调度策略public class TestYield { public static void main(String[] args) { MyYield myYield = new原创 2021-02-17 23:08:45 · 126 阅读 · 0 评论 -
Java多线程详解(三)线程状态 2、停止线程与线程休眠
Java多线程详解(三)线程状态(1)线程状态的简要说明(2)线程状态转换过程中常用的方法(3)停止线程 - 不推荐JDK提供的stop()、destroy()方法【已废弃】 - 推荐让线程自己停止下来(建议使用一个标志位进行终止变量 当flag = false,则终止线程运行)。//测试stop//1.建议线程正常停止--->利用次数,不建议死循环//2.建议使用标志位--->设置一个标志位//3.不要使用stop或者destroy等过时或者JDK不建议使用的方法publ原创 2021-02-17 23:01:07 · 118 阅读 · 0 评论 -
Java多线程详解(三)线程状态 1、线程状态的简要说明
Java多线程详解(三)线程状态(1)线程状态的简要说明在操作系统中有详细说明,这里不做赘述(2)线程状态转换过程中常用的方法其中join()方法可以理解为插队。interrupt()方法不建议使用。...原创 2021-02-17 22:55:30 · 97 阅读 · 0 评论 -
Java多线程详解(二)线程实现3、Lambda表达式
二、线程的实现(1)线程创建的三种方法(2)静态代理(3)Lambda表达式函数式接口:下面是一个包含了外部类,静态内部类,局部内部类,匿名内部类,Lambda表达式的例子:public class TestLambda { //3、静态内部类 static class Like2 implements ILike{ @Override public void lambda() { System.out.print原创 2021-02-17 15:23:11 · 183 阅读 · 0 评论 -
Java多线程详解(二)线程实现 2、静态代理
二、线程的实现(1)线程创建的三种方法(2)静态代理一个实例://测试类public class StaticProxy { public static void main(String[] args) { MarryCompany marryCompany = new MarryCompany(new You()); marryCompany.HappyMarry(); }}//需要实现的接口interface Marry{ voi原创 2021-02-17 15:14:17 · 132 阅读 · 0 评论 -
Java多线程详解(二)线程实现 1、线程创建的三种方法
二、线程的实现(1)线程创建:共有三种方法1. 继承Thread类自定义线程类继承Thread类重写run()方法,编写线程执行体创建编程对象,调用start()方法启动线程public class TestThread extends Thread{ @Override public void run() { //run方法线程体 for (int i = 0; i < 20; i++){ System.out原创 2021-02-17 15:10:26 · 130 阅读 · 0 评论 -
Java多线程详解(一)多线程简介
此系列博客为自己的学习笔记,希望可以帮助到大家。一、多线程简介(1)多任务:日常生活中,同一时间段干多件事,比如一边聊天一边玩手机,但实际上我们的大脑在同一时间依然只做了一件事。(2)多线程:原来是一条路,车多了,道路堵塞,于是多加了几个车道,让多个车同时在路上运行。(3)程序.进程.线程:程序:指令和数据的有序集合,本身没有运行的含义,是一个静态的概念。进程:是执行程序的一次执行过程,它是一个动态的概念。是系统资源分配的单位。通常一个进程中可以包若干个线程,但一个进程中至少有原创 2021-02-17 15:04:59 · 154 阅读 · 0 评论