随笔分类 -  高并发与多线程

摘要:Runtime.getRuntime().addShutdownH1、用来监测程序退出和出现异常死掉的情况 2、可以在程序退出和出现异常死掉时释放资源或给出通知 3、钩子程序只能检测到钩子程序之后程序的信息,一般放在程序前面 阅读全文
posted @ 2019-12-19 17:13 龙宇在天 阅读(599) 评论(0) 推荐(0)
摘要:lock接口 lock实现类 测试代码 阅读全文
posted @ 2019-12-19 16:05 龙宇在天 阅读(294) 评论(0) 推荐(0)
摘要:定义一个lock接口 lock的实现类 此处wait()的是this对象,sychronized的也是this对象 测试类 缺点:如果在线程执行过程中锁被main线程释放,不能保证 线程加的锁被线程自己释放 改进方法 阅读全文
posted @ 2019-12-19 15:15 龙宇在天 阅读(255) 评论(0) 推荐(0)
摘要:测试结果,同一时间里实际上始终最多有5个线程同时运行 阅读全文
posted @ 2019-12-19 13:59 龙宇在天 阅读(509) 评论(0) 推荐(0)
摘要:生产者与消费者,采用notify()唤醒 测试代码(一个生产者与一个消费者) 测试结果是线程安全的,程序正常结束 测试代码(多个生产者与多个消费者) 测试结果:程序不能正常结束,被阻塞 多个生产者和多个消费者之间通信采用 notify()缺点:会存在所有线程都等待的问题(wait) 分析:notif 阅读全文
posted @ 2019-12-19 10:49 龙宇在天 阅读(350) 评论(0) 推荐(0)
摘要:场景描述 1.有两个对象锁A1、A2 2.两个线程t1、t2 3.t1的执行顺序是A1-->A2, t2的执行顺序是A2-->A1 4.出现状态 t1持有 A1 锁,等待 A2 锁; t2 持有 A2 锁,等待 A1 锁 5.出现死锁 检查死锁方法:使用jps查看线程pid,用jstack pid查 阅读全文
posted @ 2019-12-18 14:46 龙宇在天 阅读(399) 评论(0) 推荐(0)
摘要:概念 synchronized 是 Java 中的关键字,是利用锁的机制来实现同步的。 锁机制有如下两种特性: 互斥性:即在同一时间只允许一个线程持有某个对象锁,通过这种特性来实现多线程中的协调机制,这样在同一时间只有一个线程对需同步的代码块(复合操作)进行访问。互斥性我们也往往称为操作的原子性。 阅读全文
posted @ 2019-12-18 10:26 龙宇在天 阅读(1484) 评论(0) 推荐(0)
摘要:使用synchronized(object)实现线程安全 测试代码 使用synchronized给方法签名加锁实现线程安全 使用synchronized(this)实现线程安全 使用synchronized加锁的时候尽量减小加锁部分代码的粒度,在保证必要的数据安全前提下减少程序执行时间 阅读全文
posted @ 2019-12-18 08:26 龙宇在天 阅读(254) 评论(0) 推荐(0)
摘要:思路 1.首先在一个类中创建一个执行线程, 2.重写该执行线程的run()方法时创建一个新线程作为该执行线程的子线程 3.子线程.setDaemon(true)设置子线程为守护线程,确保执行线程结束时子线程随之结束 4.子线程.join()保证正常情况下子线程业务逻辑执行完成之后执行线程才死亡 5. 阅读全文
posted @ 2019-12-17 13:38 龙宇在天 阅读(255) 评论(0) 推荐(0)
摘要:使用开关的方式停止线程 通过打断sleep()来停止线程 通过修改线程的状态来停止线程 阅读全文
posted @ 2019-12-17 11:25 龙宇在天 阅读(259) 评论(0) 推荐(0)
摘要:官网解释 If this thread is blocked in an invocation of the wait(), wait(long), or wait(long, int) methods of the Object class, or of the join(), join(long 阅读全文
posted @ 2019-12-16 16:59 龙宇在天 阅读(363) 评论(0) 推荐(0)
摘要:官网描述 join Waits for this thread to die. An invocation of this method behaves in exactly the same way as the invocation join(0) An invocation of this m 阅读全文
posted @ 2019-12-13 15:26 龙宇在天 阅读(876) 评论(0) 推荐(0)
摘要:官网API解释 setDaemon public final void setDaemon(boolean on) Marks this thread as either a daemon thread or a user thread. The Java Virtual Machine exits 阅读全文
posted @ 2019-12-13 11:41 龙宇在天 阅读(356) 评论(0) 推荐(0)
摘要:使用继承Thread类的方式创建线程 银行叫号部分的代码 package com.dwz.concurrency.chapter2; /** * 使用static保证号码数据共享 * 线程的创建方式:继承Thread类 */ public class TicketWindow extends Thr 阅读全文
posted @ 2019-12-12 14:02 龙宇在天 阅读(499) 评论(0) 推荐(0)
摘要:多线程Thread:1.java应用程序的main函数是一个线程,是被JVM启动的时候调用,线程的名字叫main2.实现一个线程,必须创建Thread实例,override run方法,并且调用start方法3.在JVM启动后,实际上有多个线程,但是至少有一个非守护线程。4.当你调用一个线程star 阅读全文
posted @ 2019-12-11 10:48 龙宇在天 阅读(137) 评论(0) 推荐(0)

//右侧添加目录 //增加页面点击显示24字社会主义核心价值观