摘要:
反射Reflection 动态语言:在运行时代码可以根据某些条件改变自身结构,主要动态语言:Object-C、C#、JS、PHP、Python等 静态语言:在运行时不可以改变其结构的语言,主要静态语言有:java、C、C++等 java可以称之为“准动态语言”,可以利用反射机制获得类似动态语言的特性 阅读全文
摘要:
注解Annotation 作用: 可以被其他程序读取 对程序作出解释(与comment注释 相同) 注解以“@注释名”在代码中存在,还可以添加一些参数值,例如:@SupperessWarnings(value="unchecked") 一般附加在package,class,method,field等 阅读全文
摘要:
线程池 背景:经常创建和销毁,使用量特别大的资源,比如并发情况下的线程,对性能影响很大 思路: 提前创建好多个线程,放入线程池中,使用时直接获取,使用完放回池中。 可以避免频繁的创建销毁、实现重复利用 好处: 提高响应速度(减少了创建新线程的时间) 降低资源消耗(重复利用线程池中线程,不需要每次都创 阅读全文
摘要:
线程协作 生产者、消费者模式: 这是一个线程同步问题,生产者和消费者共享同一个资源,并且生产者和消费者之间相互依赖,互为条件 对于生产者:没有生产产品之前,要通知消费者等待,而生产了产品之后,又需要马上通知消费者消费 对于消费者:在消费之后,要通知生产者已经结束消费,需要生产新的产品以供消费 在生产 阅读全文
摘要:
死锁 多个线程各自战友一些资源,并且相互等待其他线程占有的资源才能运行,而导致两个或者多个线程都在等待对方释放资源,都停止执行的情形。某一个同步块同时拥有两个以上对象的锁时,就可能会发生死锁问题。 形成死锁的四个必要条件: 互斥条件 请求与保持条件 不剥夺条件 循环等待条件 避免死锁:破坏形成死锁的 阅读全文
摘要:
线程同步 并发:多个线程访问同一个对象 例:上万人同时抢100张票 处理多线程问题时,多个线程访问同一个对象,并且某些线程还想修改这个对象。这时候需要线程同步, 线程同步其实就是一种等待机制,多个需要同时访问此对象的线程进入这个对象的等待池形成队列,等待前面线程使用完毕,下一个线程再使用 线程同步: 阅读全文
摘要:
守护线程 线程分为用户线程和守护(daemon)线程 虚拟机必须确保用户线程执行完毕(main) 虚拟机不用等待守护线程执行完毕 (gc) package com.yuanyu.thread; //测试守护线程 //上帝守护你 public class TestDaemon { public sta 阅读全文
摘要:
线程的优先级 java提供一个线程调度器来监控程序中启动后进入就绪状态的所有线程,线程调度器按照优先级决定应该调度哪个线程来执行 线程的优先级用数字表示,范围从1~10 Thread.MIN_PRIORITY=1; Thread.MAX_PRIORITY=10; Thread.NORM_PRIORI 阅读全文
摘要:
线程的状态 线程的状态: 线程停止 不推荐使用JDK提供的stop()、destroy()方法 @Deprecated 【已废弃】 推荐线程自己停止下来 建议使用一个标志位进行终止变量:当flag=false,则终止线程运行 package com.yuanyu.thread; //测试停止线程 / 阅读全文
摘要:
java Lambda表达式 λ是希腊字母中排序第十一位的字母,lambda表达式可以避免匿名内部类定义过多 ,只留下核心的逻辑,使代码看上去更简洁,其实质属于函数式编程。 函数式接口:只包含唯一一个抽象方法的接口 例如: interface Runnable{ void runnable(); } 阅读全文