Java.SE01.多线程
1.进程,线程:
所谓进程(process)就是一块包含了某些资源的内存区域。操作系统利用进程把它的工作划分为一些功能单元。
进程中所包含的一个或多个执行单元称为线程(thread)。
一个线程是进程的一个顺序执行流.
2. 并发:
微观上所有进程和线程是走走停停的,宏观上都在运行,这种都运行的现象叫并发,但是不是绝对意义上的“同时发生。
线程调度机制是OS提供的一个用于并发处理的程序。java虚拟机自身也提供了线程调度机制,用于减轻OS切换线程带来的更多负担。
3.创建线程
java.lang.Thread类是线程类;
Thread创建线程:
01. public class TestThread extends Thread{
02.
03. public void run() {
04. for(int i=0;i<10;i++){
05. System.out.println("我是线程");
06. }
07. }
08. }
启动线程:
Thread thread = new TestThread();//实例化线程
thread.start();//启动线程
匿名类方式创建线程 :
Thread thread = new Thread(){ //匿名类方式创建线程 public void run(){//线程体 }};thread.start();//启动线程
4.获取线程信息:
- long getId():返回该线程的标识符
- String getName():返回该线程的名称
- int getPriority():返回线程的优先级
- Thread.state getState():获取线程的状态
- boolean isAlive():测试线程是否处于活动状态
- boolean isDaemon():测试线程是否为守护线程
- boolean isInterrupted():测试线程是否已经中断
public class TestThread { 02. public static void main(String[] args) { 03. Thread current = Thread.currentThread(); 04. long id = current.getId(); 05. String name = current.getName(); 06. int priority = current.getPriority(); 07. Thread.State state = current.getState(); 08. boolean isAlive = current.isAlive(); 09. boolean isDaemon = current.isDaemon(); 10. boolean isInterrupt = current.isInterrupted(); 11. System.out.println("id:"+id); 12. System.out.println("name:"+name); 13. System.out.println("priority:"+priority); 14. System.out.println("state:"+state); 15. System.out.println("isAlive:"+isAlive); 16. System.out.println("isDaemon:"+isDaemon); 17. System.out.println("isInterrupt:"+isInterrupt); 18. } 19. }
5.线程优先级:
Thread.MIN_PRIORITY //最低1
Thread.MAX_PRIORITY //最高10
Thread.NORM_PRIORITY //默认5
6.守护线程
守护线程与普通线程在表现上没有什么区别;
守护线程的特点是,当进程中只剩下守护线程时,所有守护线程强制终止。
7.Thread的静态方法sleep用于使当前线程进入阻塞状态:
8.锁机制:
Java提供了一种内置的锁机制来支持原子性:
同步代码块(synchronized 关键字 ),同步代码块包含两部分:一个作为锁的对象的引用,一个作为由这个锁保护的代码块。
①静态方法锁:
01. public synchronized static void xxx(){ 02. …. 03. }
9.线程安全API/非线程安全API
非线程安全:
StringBuilder; ArrayList; LinkedList ;HashSet; HashMap
线程安全:
StringBuffer; Vector;Hashtable;10.线程池:
主要作用:①控制线程数量 ②重用线程
Java.SE01.多线程相关推荐
- Java.SE01.多线程_案例01
1.有效的缩小同步范围可以再保证并发安全的前提下提高并发效率,同步块可以更精确的锁定需要同步执行的代码片段. 举个生活例子: 买衣服可以简化为三个步骤:①挑选衣服②试衣服③结账. 在同一家店中多 ...
- Oracle字符串转BooIean,利用Java的多线程技术实现数据库的访问.pdf
利用Java的多线程技术实现数据库的访问.pdf 第 卷第 期 计算机应用 22 12 Voi .22 , No . 12 年 月 2002 12 Computer Appiications Dec ...
- Java 并发/多线程教程(四)-并发模型
本系列译自jakob jenkov的Java并发多线程教程(本章节部分内容参考http://ifeve.com/并发编程模型),个人觉得很有收获.由于个人水平有限,不对之处还望矫正! 并发系统可以有多 ...
- LeetCode1117. Building H2O --Java解法--多线程保证执行顺序--AtomicInteger
此文首发于我的个人博客:LeetCode 1117. Building H2O --Java解法–多线程保证执行顺序–AtomicInteger - zhang0peter的个人博客 LeetCode ...
- Java 并发/多线程教程(五)-相同线程
本系列译自jakob jenkov的Java并发多线程教程,个人觉得很有收获.由于个人水平有限,不对之处还望矫正! 相同线程是一并发框架模型,是一个单线程系统向外扩展成多个单线程的系统.这样的结果就是 ...
- java 创建多线程_Java创建多线程
Java创建多线程 下一节> 到目前为止,我们仅用到两个线程:主线程和一个子线程.然而,你的程序可以创建所需的更多线程.例如,下面的程序创建了三个子线程: // Create multiple ...
- Java接口多线程并发测试 (一)
本文为作者原创,禁止转载,违者必究法律责任!!! 本文为作者原创,禁止转载,违者必究法律责任!!! Java接口多线程并发测试 一,首先写一个接口post 请求代码: import org.apach ...
- Java的多线程和线程池的使用,你真的清楚了吗?
Java的多线程和线程池的使用 多线程大大提高程序运行效率,我们在开发过程中经常会开启一个线程来执行一些费时的任务.开启一个线程有4种方式,在下面的文章我将详细的去讲解. 继承Thread 继承Thr ...
- 《Java程序设计》实验报告——Java的多线程机制
浙江理工大学 <Java程序设计> 实验报告 20 19-20 20学年第 1学期 学 院 信息学院 班 级 计算机科学与技术18(3) 姓 名 申屠志刚 学 号 2 ...
最新文章
- python numpy.mean() axis参数使用方法【sum(axis=*)是求和,mean(axis=*)是求平均值】
- 亚马逊记AWS(Amazon Web Services)自由EC2应用
- Xcode8.0 删除插件路径
- java jdbc修改_java----jdbc(数据库的添加,删除,修改,更新)
- HTML实体字符转化为HTML标签
- 【R】语言第一课-----安装
- LPTSTR、LPCSTR、LPCTSTR、LPSTR的区别
- 单自由度振动全解:matlab理论计算 virtual.lab motion仿真Excite PU仿真
- MAPGIS提示请在“系统设置”里设置好系统库路径(SUVSLIB或者其他)再重新运行程序
- linux c蜂鸣器驱动程序,〖Linux〗OK6410a蜂鸣器的驱动程序编写全程实录
- 【ACM】算法竞赛及OJ题面常用英文单词整理(更新ing)
- 海威计算机网络,海威分布式大屏幕显示控制系统的主要优点
- F1DC2706双模数据透传蓝牙模块AT指令使用介绍
- 迅雷链总工程师来鑫:区块链3.0需解决4大难题
- JavaScript智能填写续写版(QQ邮箱地址栏简化版)
- 用c# 实现一个爬虫
- 【深度学习-机器学习】分类度量指标 : 正确率、召回率、灵敏度、特异度,ROC曲线、AUC等
- 中文版扩散模型课程:第一单元
- java:数组的静态和动态声明
- XML详细入门教程[PDF]