随笔分类 - 多线程
摘要:package Thread.Demo11; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /** * 线程池的使用 * * @author liu */ public clas
阅读全文
摘要:##wait\notify ###管程法 package Thread.Demo10; /** * 等待\唤醒,wait\notify * 消费者生产者模型--》利用缓冲区解决问题:管程法 * @author liu */ //生产者,消费者,产品,缓冲区 public class Producto
阅读全文
摘要:死锁:多个线程互相抱着对象需要的资源,然后形成僵持 产生死锁的四个必要条件: 1.互斥条件:一个资源每次只能被一个进程使用。2.请求与保持条件:一个进程因请求资源而阻塞时, 对已获得的资源保持不放。 心 3.不剥夺条件:进程已获得的资源,在末使用完之前 ,不能强行剥夺。 4.循环等待条件:若干进程之
阅读全文
摘要:#synchronized/lock对比 ##synchronized方法和synchronized块 同步方法: public synchronized void method(int args){} synchronized方法控制对“对象”的访问﹐每个对象对应一把锁﹐每个synchronize
阅读全文
摘要:##守护线程 线程分为用户线程和守护线程 虚拟机必须保证用户线程执行完毕 虚拟机不用等待守护线程执行完毕(后台记录操作日志,监控内存,垃圾回收等等 package Thread.Demo08; /**线程分为用户线程和守护线程 * 虚拟机必须保证用户线程执行完毕 * 虚拟机不用等待守护线程执行完毕(
阅读全文
摘要:getState() package Thread.Demo07; /** * 观测线程状态 * * @author liu */ public class Demo01 { public static void main(String[] args) throws InterruptedExcep
阅读全文
摘要:##通过标识位停止 1建议线程正常停止 >利用次数,不建议死循环。 2建议使用标志位 >设置一个标志位 3不要使用stop或者destroy等过时或者JDK不建议使用的方法 package Thread.Demo06; /** * 测试stop * 1建议线程正常停止 >利用次数,不建议死循环。 *
阅读全文
摘要:##lambda 函数式接口:实现1个接口,而且接口只有1个方法才能用 lambda表达式只能有一行代码情况才能简化成一行;如果多行那么就用代码块包裹 前提是接口是函数式接口 多个参数也可以去掉参数类型,但是都要去掉,必须加括号 package Thread.Demo05; /** * lambda
阅读全文
摘要:#静态代理 ** 静态代理模式** ** 真实对象和代理对象都要实现同一个接口** ** 代理对象要代理真实角色** package Thread.Demo04; /** * 静态代理模式 * 真实对象和代理对象都要实现同一个接口 * 代理对象要代理真实角色 * <p> * 好处:1代理对象可以做很
阅读全文
摘要:##下载图片 自定义线程类继承Thread类 重写run()方法,编写线程执行体 创建线程对象,调用start()方法启动线程 ###继承thread,重写run() package Thread.Demo02; import org.apache.commons.io.FileUtils; imp
阅读全文
摘要:##核心概念 线程就是独立的执行路径; 在程序运行时,即使没有自己创建线程,后台也会有多个线程,如主线程,gc线程; main()称之为主线程,为系统的入口,用于执行整个程序; 在一个进程中,如果开辟了多个线程,线程的运行由调度器安排调度,调度器是与操作系统紧密相关的,先后顺序是不能认为的干预的。
阅读全文
摘要:##多线程 run(),主线程跑到run(),跑完run方法,再去跑主线程,单线程 start(),主线程跑到start(),就开启多线程跑,不一定马上执行,CPU调度安排 //创建线程 方式一:继承Thread类,重run()方法,调用start开启线程 public class Demo01 e
阅读全文