摘要:
//测试juc安全类型的集合 public class TestJUC { public static void main(String[] args) { CopyOnWriteArrayList<String> copyOnWriteArrayList=new CopyOnWriteArrayL 阅读全文
摘要:
18、线程同步机制 多个线程操作同一个资源 并发:同一个对象被多个线程同时操作 处理多线程问题时,多个线程访问同一个对象,并且某些线程还想修改这个对象,这时候我们就需要线程同步。线程同步其实就是一个等待机制,多个需要同时访问此对象的线程进入这个对象的等待池形成队列,等待前面的线程时候完毕,下一个线程 阅读全文
摘要:
15、守护线程 线程分为用户线程和守护线程(daemon) 虚拟机需要确保用户线程执行完毕 虚拟机不用等待守护线程执行完毕(一般讲当用户线程结束后守护线程也会随之结束但不一定一定随用户线程结束而结束) 如,后台记录操作日志,监控内存,垃圾回收等 public class TestDaemon { p 阅读全文
摘要:
14、线程的优先级 java提供一个线程调度器来监控程序中启动后进入就绪状态的所有线程,线程调度器按照优先级决定应该调度哪个线程 线程的优先级用数字表示,范围从1~10 Thread.MIN_PRIORITY =1 Thread.MAX_PRIORITY =10 Thread.NORM_PRIORI 阅读全文
摘要:
Thread.State 线程状态。线程可以处于以下状态之一 new 尚未启动的线程处于状态 runnable 在java虚拟机中执行的线程处于此状态 blocked 被阻塞 等待监视器锁定的线程处于此状态 waitiing 正在等待另一个线程执行特定动作的线程处于此状态 timed_waiting 阅读全文
摘要:
#Lamda表达式简化线程创建方式 ####实际上本质还是实Runnable接口的一种方法,此方法的好处是可以简化代码,利用函数式接口,将原先需要实现Runnable接口重写run方法的部分,简化为 new Runnable(){}形式(创建线程对象时实现接口方法),再简化为函数式接口Lamda表达 阅读全文
摘要:
12、线程强制执行_join Join合并线程,待此线程执行完成后,再执行其他线程,其他线程阻塞 可以想象成插队 //测试join方法(vip插队) public class TestJoin implements Runnable{ @Override public void run() { fo 阅读全文
摘要:
11、线程礼让_yield 礼让线程,让当前正在执行的线程暂停,但不阻塞 将线程从运行状态转为就绪状态 让cup重新调度,礼让不一定成功,看cup调度 /*测试礼让线程,礼让不是阻塞和sleep不同, 是将线程状态置为就绪态不是阻塞态, 此时运行的先后顺序还是要看cpu心情 所以礼让可能不会成功 * 阅读全文
摘要:
10、线程休眠_sleep sleep(long millis) 指定当前线程阻塞的毫秒数 sleep存在异常InterruptException sleep时间达到后线程进入就绪状态 sleep可以模拟网络延时,倒计时等 每一个对象都有一个锁,sleep不会释放锁 ####抢票Demo //模拟网 阅读全文