美文网首页
Java基础—多线程总结

Java基础—多线程总结

作者: lemonMT | 来源:发表于2018-05-03 21:29 被阅读0次

创建线程的三种方式

1.0 继承Thread类

继承Thread方式

2.0实现Runnable接口

实现Runnable接口

3.0实现Callable接口

实现callable接口

线程的状态

状态

Thread类的方法 

String getName()返回该线程的名称。 

static Thread currentThread():返回对当前正在执行的线程对象的引用。我觉得就是主线程 

int getPriority() 返回线程的优先级。 

void setPriority(int newPriority) 更改线程的优先级。 

static void sleep(long millis) 在指定的毫秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响。 但是并没有释放锁。一到时间立马就执行。

 void join() 等待该线程终止。 

 void setDaemon(boolean on) 将该线程标记为守护线程或用户线程。 当只剩下守护线程时jvm将终止 

static void yield() 暂停当前正在执行的线程对象,并执行其他线程。 释放了锁,使用后在可运行状态。释放后,执行的必须是级别比他高的。

 void stop(Throwable obj) 已过时。 强制终止线程。立马中断。 

中断线程: void interrupt() 中断线程。不会立马中断,会执行后中断。

Object类方法与线程方法对比

 sleep()与wait() : 1. sleep处于临时阻塞状态,但是并没有释放对象锁, wait在执行后立马释放锁,处于阻塞状态。2. sleep的时间到了,立马执行,  wait方法则在执行后如果没有被notify或者notifyAll唤醒则一直处于等待状态。3.wait方法则必须在同步中使用,而sleep不用。

线程同步

synchroized, 可以修饰方法,  代码段,类等。

LOCK使用

lock ,只能锁类。

1.synchronized

 优点:实现简单,语义清晰,便于JVM堆栈跟踪,加锁解锁过程由JVM自动控制,提供了多种优化方案,使用更广泛

  缺点:悲观的排他锁,不能进行高级功能

2.lock

  优点:可定时的、可轮询的与可中断的锁获取操作,提供了读写锁、公平锁和非公平锁

  缺点:需手动释放锁unlock,不适合JVM进行堆栈跟踪

3.相同点

  都是可重入锁

线程池

Executor管理ExecutorService,然后生产各个线程池

newSingleThreadExecutor。此线程池保证所有任务的执行顺序按照任务的提交顺序执行。

newFixedThreadPool。每次提交一个任务就创建一个线程,直到线程达到线程池的最大大小。线程池的大小一旦达到最大值就会保持不变,如果某个线程因为执行异常而结束,那么线程池会补充一个新线程。

newCachedThreadPool。如果线程池的大小超过了处理任务所需要的线程,那么就会回收部分空闲(60秒不执行任务)的线程,当任务数增加时,此线程池又可以智能的添加新线程来处理任务。此线程池不会对线程池大小做限制,线程池大小完全依赖于操作系统(或者说JVM)能够创建的最大线程大小

newScheduledThreadPool。创建一个大小无限的线程池。此线程池支持定时以及周期性执行任务的需求。

线程关闭调用  service.shutdown();

ThreadLocal类

线程本地备份,避免并发访问,导致线程数据不安全。

并发包集合

  并发包中,全是线程安全的集合。

ConcurrentHashMap, 

ConcurrentSkipListMap, 

ConcurrentSkipListSet, 

ConcurrentLinkedQueue, 

ConcurrentLinkedDeque

CopyOnWriteArrayList 

CopyOnWriteArraySet

相关文章

  • android 多线程 — 线程的面试题和答案

    这里都是我从各个地方找来的资料,鸣谢: Java多线程干货系列—(一)Java多线程基础 JAVA多线程和并发基础...

  • 技术体系

    一,java核心 java基础,jvm,算法,多线程,设计模式 Java基础:java基础相关,全栈java基础 ...

  • Java多线程目录

    Java多线程目录 Java多线程1 线程基础Java多线程2 多个线程之间共享数据Java多线程3 原子性操作类...

  • 无标题文章

    ### java多线程总结

  • Java基础

    Java基础 集合基础 集合框架 多线程基础 多线程框架 反射 代理 集合基础 ArrayList LinkedL...

  • java多线程相关

    (一) 基础篇 01.Java多线程系列--“基础篇”01之 基本概念 02.Java多线程系列--“基础篇”02...

  • Java多线程高级特性(JDK8)

    [TOC] 一、Java多线程 1.Java多线程基础知识 Java 给多线程编程提供了内置的支持。一条线程指的是...

  • Java基础—多线程总结

    创建线程的三种方式 1.0 继承Thread类 2.0实现Runnable接口 3.0实现Callable接口 线...

  • BAT研发面试36题总结:Spring+Redis+Docker

    面试总结: java的基础知识点,主要围绕在集合类和多线程等:ArrayList、LinkedList、HashS...

  • Java多线程系列目录(共43篇)-转

    最近,在研究Java多线程的内容目录,将其内容逐步整理并发布。 (一) 基础篇 Java多线程系列--“基础篇”0...

网友评论

      本文标题:Java基础—多线程总结

      本文链接:https://www.haomeiwen.com/subject/fpilrftx.html