多线程
来源:互联网 发布:网络视频广告表现形式 编辑:程序博客网 时间:2024/06/05 15:07
1)多线程 Thread
如何创建一个Thread
方式一:
1、定义一个类继承Thread并重写run方法,将要多线程运行的代码写在run方法中,run方法相当于一个存储器。
2、创建对象并用类名.start启用线程 (类名.start启用线程的作用:一是启动线程,二是调用run方法)
方式二:
1、定义类实现Runnable接口
2、覆盖run方法
3、通过Thread创建线程对象
4、将Runnable接口的子对象作为实际参数传递给Thread的函数
5、调用Thread的start方法开启线程并调用Runnable接口子类的run方法
这个方法的好处:避免了单继承的局限性,一般开发中建议用此方法。
多线程运行状态:
比如商场收银事例。多条队伍同时收银为多线程,还未轮到结账的人处于排队状态的在线程中叫临时等待状态,这时累了坐在旁边的椅子上(sleep()、wait()),叫做暂时放弃执行权,偷了东西被人抓了起来叫stop()
java对于多线程的安全问题提供了专业的解决方法:
1、同步代码块
synchronized(对象)
{需要被同步的代码}
2、同步函数
将synchronized作为修饰符放在函数上。
同步函数使用的锁是this
如果同步函数被静态static修饰,同步函数使用的锁不再是this,因为静态方法中是没有this的,而是这个同步函数所在类的字节码文件对象,即类名.class
懒汉式加锁
class SingleDome
{
private SingleDome(){};
private static SingleDemo single = null;
public static SingleDemo getInstance()
{
if(single == null)
{
synchronized (SingleDemo.class)
{
if(single == null)
single = new SingleDemo ();
return
single;
}
}
}
}
死锁:同步函数 中 嵌套同步函数。
如果不同方法(多线程)操作同一个资源,同一个资源需要同步。如果一个方法先执行,执行后再执行另一个,需要加入等待唤醒机制(flag 。。对象.wait(),对象.notify() )
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 多线程
- 4545hhh的专栏
- [python学习] 简单爬取维基百科程序语言消息盒
- BW十日谈之CUBE
- Win7下Android开发环境的搭建(更新于2015/3)
- 开发人员最常用的的13款PHP框架
- 多线程
- 页面添加置顶按钮
- void指针的转换(2)
- cocos2dx触摸事件的添加问题,触摸事件不起作用
- 日语语法总结-8 md version
- android camera(三):camera V4L2 FIMC
- java网页验证码代码
- linux系统安全加固-升级glibc/bash
- SSH框架总结(框架分析+环境搭建+实例源码下载)