多线程

来源:互联网 发布:js 大于等于 小于等于 编辑:程序博客网 时间:2024/05/17 09:01

概念:多线程是指多个线程的并发技术,即同一时刻运行多个任务,目的是为了提高资源的使用率从而提高系统的效率。

实现:1.硬件上的实现由多核心处理器;2.软件上来说JAVA中实现多线程的方式有两种:继承Thread类和实现Runnable接口,(在JDK1.5后加入Executor包专门用来实现提供线程池,专门用来实现多线程)。后者使用起来更加灵活,不限制类的集成体系。两种方法都要实现run()方法,run()方法是线程运行的逻辑内容。线程的启动时通过start()方法来启动,start()方法是线程进入可运行状态,等待CPU执行运行。

状态:线程的状态有初始化态、可运行态、运行态、阻塞态、终止态。New Thread线程进入初始化态,运行start()方法使线程进入可运行态。进入可运行态后等待操作系统分配CPU时间片进入运行态。run()方法结束后进入结束态。在运行态有两种特殊的情况:1)如果遇到等待数据输入或者sleep(),线程进入阻塞态。进入阻塞态后线程并不释放对象锁,数据输入或者sleep()时间到后,线程又会由阻塞态进入可运行状态;2)如果调用了wait(),线程会释放对象锁,进入对象锁的等待队列。等到其他线程运行notify/notifyAll,进入对象锁池并有机会重新拿到对象锁,如果拿到对象锁,线程重新进入可运行态。

同步与通信:多线程的同步是通过来synchronized实现的,它保证同一时刻只能有一个线程访问被修饰的共享资源。多线程的通信主要有系统间的消息通讯和线程同步。线程同步是通过wait(),notify(),notifyAll()来实现的。wait()释放对象锁,notfify/notifyAll唤醒当前对象锁的等待的线程(一个或者多个)。

多线程的应用:1)WEB程序 2)数据库连接池 3)WEB容器 如tomcat




参考文献:http://developer.51cto.com/art/200907/140261_1.htm

0 0
原创粉丝点击