多线程编程
2014-05-11 21:39 pandeng0120 阅读(120) 评论(0) 编辑 收藏 举报概念区分:
进程:一个正在运行的程序称为一个进程,每个进程有自己独立的内存空间,每个进程的内部数据和状态都是独立的。
线程:一个程序在同一时间内可以运行多个任务,每个任务称为一个线程,同一进程中的所有线程都在同一内存空间中工作,共享同一内存和系统资源。
创建线程的方式:
1,通过继承Thread类来创建线程 调用.start()方法开始运行线程
2,通过实现Runnable接口来创建线程 创建一个Thread类的对象,将实现接口的类的对象作为参数放入Thread类对象的参数列表中,调用该Thread类对象的start()方法运行线程
线程的状态流程:
新建(new)-就绪(Runnable)-运行(Running)-死亡(Dead)
运行状态又分为四种:
1,sleep,睡眠;2,wait,等待;3,yield,挂起;4,阻塞
sleep和wait的区别:
1,sleep是时间一到自动醒来,wait需要由notify方法唤醒
2,sleep是Thread类的方法,wait是Object类的方法
3,sleep可以用在所有线程中,wait只能用在同步的线程中
4,sleep执行中不能释放锁,wait执行中会释放锁
线程的同步:
概念:两个以上的线程要访问共享资源时,同一时间点只有一个线程能够存取共享资源的过程称之为同步
关键字:Synchronized 一种使用方法是作为类名的修饰符,另一种方法是建立Synchronized(){}同步块
优点:数据安全性高
缺点:效率低,并可能造成死锁(对象锁由另一个进程占据,无法获得造成。可使用wait()方法自动释放锁来解决)
线程的异步:
概念:与同步相反
优点:效率高
缺点:数据不安全
经典应用:生产者和消费者