黑马程序员 多线程总结1
来源:互联网 发布:淘宝交易平台 编辑:程序博客网 时间:2024/06/18 15:21
---------------------------------------------------------------- android培训、java培训、期待与您交流! ----------------------------------------------------------------------------------------
多线程总结:
一,检验你的程序是否存在安全隐患可以通过
try{Thread.sleep()} catch(Exception e){} 检测看会不会出现意外的结果
二,实现同步两种方式:
1,同步代码块
synchronized(锁)
{
}
锁:可以是自己创建的对象; 可以是“字节码对象” 即类名.class
2,同步函数
方法的返回值类型前加synchronized 其实他使用的锁是this
public synchronized void show(){}
三,死锁
当同步中还嵌套同步的时候就可能出现死锁,即一个线程拥有了一个锁后,想拥有另一个锁,而另一个锁被另一个线程拥有,两个线程都拿着自己的锁不放,而想拥有别人的锁。
示例:
/*
需求:编写一个死锁程序。
分析:死锁,需要两个锁,或者两类公共资源。
两个人要完成寻宝比赛,必须先找拿到资源一,再找到资源二,方可完成任务。
class DeadLock {public static void main(String[] args) {Thread p1=new Thread(new Dead(true),"p1");Thread p2=new Thread(new Dead(false),"p2");p1.start();p2.start();}}class Resource{static Object resource1=new Object();static Object resource2=new Object();}class Dead implements Runnable{public boolean flag;public Dead(boolean f){this.flag=f;} public void run(){while(true){if(flag){synchronized(Resource.resource1){System.out.println("Resource.resource1"+"---"+Thread.currentThread().getName());synchronized(Resource.resource2){System.out.println("Resource.resource2"+"---"+Thread.currentThread().getName());}}}else{synchronized(Resource.resource2){System.out.println("Resource.resource2"+"---"+Thread.currentThread().getName());synchronized(Resource.resource1){System.out.println("Resource.resource1"+"---"+Thread.currentThread().getName());}}}}}}
---------------------------------------------------------------- android培训、java培训、期待与您交流! ----------------------------------------------------------------------------------------
- 黑马程序员 多线程总结1
- 黑马程序员 多线程总结
- 黑马程序员 多线程总结
- 多线程总结-----黑马程序员
- 黑马程序员-多线程总结
- 黑马程序员-多线程总结
- 【黑马程序员】多线程总结
- 黑马程序员__多线程总结1
- 黑马程序员--多线程总结1--java
- [黑马程序员]多线程学习总结
- 黑马程序员----------多线程笔记总结
- 黑马程序员 Java多线程总结
- 黑马程序员---java多线程总结
- 黑马程序员_多线程总结
- 黑马程序员-----java多线程总结*
- 黑马程序员_java多线程总结
- 黑马程序员_多线程总结
- 黑马程序员 多线程总结2
- 将类的成员函数注册为回调函数
- Windows下多个网络接入点,如何设置优先级?
- fs-lib.sh
- http://acm.hdu.edu.cn/showproblem.php?pid=4148
- Linux时间子系统之五:低分辨率定时器的原理和实现
- 黑马程序员 多线程总结1
- jquery-常用方法
- Android静态变量的生命周期
- 关于内存对齐
- oracle集合查询
- NSIndexPath
- 解决 c# js url 乱码,c# url 编码 UrlEncode,javascript url 编码 encodeURI,解析
- 降龙十八掌搞定rt3070 USB WIFI模块在android2.3平台上上网[基于x210开发板]
- 关于 android 中 postDelayed方法的使用