并发编程一
来源:互联网 发布:中国石油进出口数据 编辑:程序博客网 时间:2024/05/17 22:25
并发编程
一.Java中实现多线程有两种方法:继承Thread类、实现Runnable接口,在程序开发中只要是多线程,肯定永远以实现Runnable接口为主,因为实现Runnable接口相比继承Thread类有如下优势:
1、可以避免由于Java的单继承特性而带来的局限;
2、增强程序的健壮性,代码能够被多个线程共享,代码与数据是独立的;
3、适合多个相同程序代码的线程区处理同一资源的情况。
二.java中线程中断标记 interrupt()方法把处于阻塞状态(sleep, wait, join )线程终止掉进入InterruptException中,InterruptException会清除中断标记,但是该线程被打断之后仍然向下执行
1.只要执行了中断,碰到阻塞就会中断阻塞进入InterruptException
2.InterruptException会把阻塞标记去除掉
3.判断线程是否执行过中断有两个方法isInterrupted和Thread.interrupted()
3.1 Thread.interrupted() 默认为false,会清除掉中中断线程的标记,使中断不再继续执行
3.2 Thread.isInterrupted 默认为false 不会清除掉调用中断线程的标记
补充
这里补充下yield和join方法的使用。
join方法用线程对象调用,如果在一个线程A中调用另一个线程B的join方法,线程A将会等待线程B执行完毕后再执行。
yield可以直接用Thread类调用,yield让出CPU执行权给同等级的线程,如果没有相同级别的线程在等待CPU的执行权,则该线程继续执行。
一.Java中实现多线程有两种方法:继承Thread类、实现Runnable接口,在程序开发中只要是多线程,肯定永远以实现Runnable接口为主,因为实现Runnable接口相比继承Thread类有如下优势:
1、可以避免由于Java的单继承特性而带来的局限;
2、增强程序的健壮性,代码能够被多个线程共享,代码与数据是独立的;
3、适合多个相同程序代码的线程区处理同一资源的情况。
二.java中线程中断标记 interrupt()方法把处于阻塞状态(sleep, wait, join )线程终止掉进入InterruptException中,InterruptException会清除中断标记,但是该线程被打断之后仍然向下执行
1.只要执行了中断,碰到阻塞就会中断阻塞进入InterruptException
2.InterruptException会把阻塞标记去除掉
3.判断线程是否执行过中断有两个方法isInterrupted和Thread.interrupted()
3.1 Thread.interrupted() 默认为false,会清除掉中中断线程的标记,使中断不再继续执行
3.2 Thread.isInterrupted 默认为false 不会清除掉调用中断线程的标记
补充
这里补充下yield和join方法的使用。
join方法用线程对象调用,如果在一个线程A中调用另一个线程B的join方法,线程A将会等待线程B执行完毕后再执行。
yield可以直接用Thread类调用,yield让出CPU执行权给同等级的线程,如果没有相同级别的线程在等待CPU的执行权,则该线程继续执行。
0 0
- Erlang并发编程(一)
- 并发编程一:CopyOnWriteArrayList
- [JAVA] 并发编程一
- 并发编程一
- JAVA 并发编程一
- 漫谈并发编程(一) - 并发简介
- 并发编程一:并发概念和基础
- C++11并发编程(一):并发初探
- <读书笔记--并发>一、并发编程的挑战
- java并发编程(一)
- JAVA并发编程笔记一
- Java并发编程(一)
- Java并发编程总结一
- java并发编程 (一) 《基本知识》
- java 并发编程基础知识一
- 并发编程学习笔记(一)
- C++并发编程:一、基本概念
- C#并发编程(一)
- zabbix客户端部署
- Mac下IDEA的使用之常用快捷键篇
- dubbo + zookeeper + spring 分布式系统(二)
- mysql事务隔离级别
- Nginx解决前端调用API时的跨域问题
- 并发编程一
- 合并bootloader和app的bin文件
- Android 测试数据格式
- Spring 拦截器的使用
- IOS开发模块总结(一)本地数据存储7 NSKeyedArchiver归档
- 用大数据预测农业趋势获百万美元融资【智库2861】
- java树结构
- 顺序表排重
- ForkJoinPool的使用