java高并发-线程的基本使用
2017-11-08 17:30
405 查看
前言
文章是由本人阅读葛一鸣的《JAVA高并发程序设计》所做的记录,详情请阅读作者书籍创建线程
1.start方法开启线程会新建一个线程并且让这个线程执行run方法2.run方法开启线程不会创建新的线程,只会在当前线程串行执行run中的代码
终止线程
1.stop会强行把执行一半的线程终止,并且释放所。(容易造成程序执行一半就结束了,造成错误)线程中断
1.public void Thread.interrupt; //中断线程 2.public boolean Therd.isInterrupted; //判断线程是否被中断 3.public static boolean Thread.interrupted;//判断是否被中断,并清除当前中断状态
设置中断标志后线程并不会停止执行,需要自定义相应的中断代码。
等待线程结束(join)和谦让(yield)
public final void join() throws InterruptedExcption;//无限等待,直到目标线程执行完毕 public final synchronized void join(long mills) throws InterrupteException; //设置最大等待时间,超过时间则直接执行 public static native void yield();//执行此方法后,当前线程会让出cpu,之后还会进行cpu抢夺,却不一定抢夺的到
volatile关键字
1.使用volatile关键字修饰变量会使虚拟机注意此变量的修改,如果未使用此关键字,当变量修改时,其他线程无法发现,使用volatile后,其它线程会发现。2.volatile并不能保证一些复合操作的原子性。
3.使用volatile标识变量,可以在已运行的程序中动态的修改变量
线程组(ThreadGroup)
1.如果线程比较多,功能分配明确,可以使用线程组管理线程守护线程
1.是系统的守护者,比如垃圾回收线程。2.守护线程的优先级比较低,用于为系统中的其它对象和线程提供服务。
3.当线程只有守护线程的时候,jvm就会退出。
4.Thread.setDaemon必须设置在Thread.start前,否则会报异常,显示守护线程设置失败。但是程序会依然正常执行,守护线程也会被当做用户线程
线程优先级
1.Thread.setPriority(参数),由低到高,1-10.数字越大优先级越高同步锁(synchronized)
1.指定枷锁对象:对给定对象加锁,进入同步代码前要获得给定对象锁。2.直接作用于实例方法:相当于对当前实例加锁,进入同步代码前要获得给定对象锁。
3.直接作用于静态方法:相当于对当前类加锁,进入同步代码前要获得给定对象锁。
4.线程同步,线程安全,保证线程的可见性,有序性
并发下的ArrayList
1.下标越界异常:ArrayList扩容时,另一个线程访问到不一致的内部状态。2.数据错误:两个线程同时对一个下标进行赋值。
并发下的HashMap
1.同ArrayList,两个线程同时对Map进行赋值。2.死循环,链表遭到破坏,形成环路(jdk8已改善)
相关文章推荐
- java中的并发:线程的基本使用
- 01.JAVA并发编程-线程的使用-基本概念
- 【Java并发编程】之十:使用wait/notify/notifyAll实现线程间通信的几点重要说明
- Java 线程与并发研究系列一Executor简介与使用
- 【Java并发编程】之十:使用wait/notify/notifyAll实现线程间通信的几点重要说明
- [Java并发]-03-线程执行器的使用
- java线程并发blockingqueue类使用示例
- Java 并发:基本的线程机制
- java多线程的基本概念与线程的使用方法
- java并发编程---如何创建线程以及Thread类的使用
- Java并发学习之九——使用本地线程变量
- 【Java并发编程】:使用wait/notify/notifyAll实现线程间通信的几点重要说明
- (7)java5线程并发库的应用(线程池) 以及在实际项目中的使用。。
- 【java并发编程实战】-----线程基本概念
- (2.1.2)Java线程:多线程的基本概念和使用
- 【java多线程与并发库】---传统java多线程<1>线程基本概念
- Java并发编程之线程管理(基本线程同步4)
- 使用Java线程并发库实现两个线程交替打印的线程题
- 漫谈并发编程(二):java线程的创建与基本控制
- Java并发-基本的线程机制