java中多线程介绍
来源:互联网 发布:计算机专业不想编程 编辑:程序博客网 时间:2024/06/02 00:38
1.创建线程的2中方式
a)Extends Thread; 编写run方法
b)Implements Runnable:重写run方法
b)等待cpu的调度,调度后才能进入Running运行状态
c)调用sleep/yield/会进入阻塞状态,直到被唤醒
i.Thread.sleep();调度线程(当前线程)休眠进入阻塞状态,时间到后自动就绪
可以制定时间,交出cpu的执行权,能让比自己低(等、高)的优先级线程得到执行。
ii.Yield();交出cpu的控制权,但是cpu后期调度谁,不好说,可能还是自己
不能制定时间,只能让和自己同优先级的线程得到执行
iii.T.join();表示等到t线程被执行完后才会继续执行调度线程
iv.Wait()只有wait会释放对象锁,直到调用notify/notifyAll或者超时
notify/notifyAll调用时,并不会立即释放对象锁,而是等到synchronizati块执行完毕。
d)死亡状态(正常死亡好)
i.Systerm.exit(1): 退出JVM
3.线程的优先级(setPriroty)
a)Min=1; norm = 5; max =10
b)设置优先级只是说明被cpu调度的概率大
4.线程同步和死锁
a)每个对象都有锁
b)获取对象锁的方法 synchronized (xxx.class)
i.如果拿不到锁,则进入到所锁对象的锁池,等待该对象的锁通知锁池中的对象
C) 死锁
1.出现死锁原因
a)对象方法的执行需要多把锁,锁之间又相互引用
b)资源被共享
----------------------------------------------------------------------------------------------------------------------------------------
1. 为什么Thread.Stop()和Thread.Suspend()过时不用?
Stop不安全:是暴力终止线程的方法,当线程执行到sync块的一部分时,调用stop则会立即终止线程,造成数据不连贯一致。提倡用标记来终止run方法或者interrupt
suspend是容易发生死锁:suspend不会释放资源锁,如果其他线程想在拿到被锁定的资源锁后恢复该挂起线程,则会造成死锁。推荐用wait代替。
a)Extends Thread; 编写run方法
b)Implements Runnable:重写run方法
2.线程的5种状态(创建、就绪、执行、阻塞、死亡)
注意:阻塞状态和运行状态是不能直接达到的,需要回归到就绪状态。
a)T.start(); 是线程进入就绪状态,Runnable状态b)等待cpu的调度,调度后才能进入Running运行状态
c)调用sleep/yield/会进入阻塞状态,直到被唤醒
i.Thread.sleep();调度线程(当前线程)休眠进入阻塞状态,时间到后自动就绪
可以制定时间,交出cpu的执行权,能让比自己低(等、高)的优先级线程得到执行。
ii.Yield();交出cpu的控制权,但是cpu后期调度谁,不好说,可能还是自己
不能制定时间,只能让和自己同优先级的线程得到执行
iii.T.join();表示等到t线程被执行完后才会继续执行调度线程
iv.Wait()只有wait会释放对象锁,直到调用notify/notifyAll或者超时
notify/notifyAll调用时,并不会立即释放对象锁,而是等到synchronizati块执行完毕。
d)死亡状态(正常死亡好)
i.Systerm.exit(1): 退出JVM
3.线程的优先级(setPriroty)
a)Min=1; norm = 5; max =10
b)设置优先级只是说明被cpu调度的概率大
4.线程同步和死锁
a)每个对象都有锁
b)获取对象锁的方法 synchronized (xxx.class)
i.如果拿不到锁,则进入到所锁对象的锁池,等待该对象的锁通知锁池中的对象
C) 死锁
1.出现死锁原因
a)对象方法的执行需要多把锁,锁之间又相互引用
b)资源被共享
----------------------------------------------------------------------------------------------------------------------------------------
1. 为什么Thread.Stop()和Thread.Suspend()过时不用?
Stop不安全:是暴力终止线程的方法,当线程执行到sync块的一部分时,调用stop则会立即终止线程,造成数据不连贯一致。提倡用标记来终止run方法或者interrupt
suspend是容易发生死锁:suspend不会释放资源锁,如果其他线程想在拿到被锁定的资源锁后恢复该挂起线程,则会造成死锁。推荐用wait代替。
0 0
- java中多线程介绍
- Java中多线程的介绍
- java多线程中CountDownLatch的介绍
- ios中多线程介绍
- Java Thread 多线程 介绍
- Java Thread多线程介绍
- java多线程的介绍
- Java Thread 多线程 介绍
- Java多线程--初步介绍
- Java多线程编程介绍
- Java Thread 多线程 介绍
- Java多线程介绍
- Java多线程介绍
- java 多线程简单介绍
- java多线程基础介绍
- Java多线程—介绍
- Java中多线程join方法介绍与用法
- Java多线程技术入门介绍
- 222. Count Complete Tree Nodes
- 【BZOJ4319】cerc2008 Suffix reconstruction【构造】【后缀数组】
- PostgreSQL
- HTTP Content-type 对照表___http://tools.jb51.net/table/http_content_type
- 查询数据库中为null字段的数据
- java中多线程介绍
- 网络编程知识(11)--DNS
- get请求中文乱码
- hdu1111 Secret Code ----复数+DFS
- Part2:Unity学习笔记十三 - Space Shooter(从视频最后一课向Done_Main.unity场景修改的过程)
- 选择排序-java实现
- linux系统swappiness参数在内存与交换分区间优化
- 如何定位和解决Andorid的内存溢出问题(大总结)
- 直播风口之下,视频社交会成为下一个流量平台吗?