java 多线程
来源:互联网 发布:网络用语sd是什么意思 编辑:程序博客网 时间:2024/06/09 14:56
线程与进程
1)线程比进行划分得更小
2)每个进程都有一段专用的内存区域和一组系统资源,而线程却共享内存单元(包括代码和数据),通过共享的内存单元来实现数据交换、实时通信和必要的同步操作
接口与抽象类的不同
1)接口里的数据成员必须初始化,且数据成员均为常量(即不能更改)
2)接口里的方法必须全部生命为abstract,即接口不能像抽象类一样保有一般的方法,必须全部是“抽象方法”
一个接口的声明
interface 接口名称
{
final 数据类型 成员名称 = 常量;
abstract 返回值的数据类型 方法名称(参数…);
}
接口是java中实现多继承的一种机制;接口也可以继承(且一个接口可以继承多个接口)
利用继承Thread类实现多线程
1)创建一个类TestThread,继承Thread类,并实现run()方法
2)在程序中实例化TestThread类对象,调用start()方法即可
利用实现Runnable接口实现多线程
1)创建一个类TestThread,并覆写Runnable接口中的run()方法,则该类为一个多线程实现类实例化
2)在程序中实例化TestThread类对象t
3)通过TestThread类(Runnable接口的子类)实例化一个Thread对象,再调用start()方法即可启动多线程
Runnable接口中并没有start()方法,所以一个类实现了Runnable接口也必须用Thread类中的start()方法来启动多线程
PS:使用该方法的情况,一个类继承了某一个类,同时又想采用多线程技术(java不允许多继承,只允许单一继承)
继承Thread类以及实现Runnable接口的区别
1)Thread方式各个线程间资源不共享,Runnable方式各线程间资源共享
2)Runnable方式适用于已经继承了某一个类的子类,而又想放入多线程中的情况(java中不允许多重继承)
一个线程一般具有六种状态
1)NEW:尚未启动的线程
2)RUNNABLE:正在Java虚拟机中之行的线程
3)BLOCKED:受阻塞等待某个监视器锁的线程
4)WAITING:无限期的等待另一个线程来执行某一特定操作的线程
5)TIMED_WAITING:等待另一个线程来执行某一操作或者等待指定时间的线程
6)TERMINATED:已退出的线程
前台线程与后台线程
对于一个java程序,只要还有一个前台线程在运行,该进程就不会结束
一般的线程都是前台线程,在某个线程对象启动之前调用了setDaemon(true)方法,这个线程就变成了后台线程
线程的强制执行
线程可以调用join()方法来强制执行,其它线程必须等到该线程执行结束才能执行
另外还有有参数的join()方法
1)Join() 等待该线程终止
2)Join(long millis) 等待该线程终止,最长时间为millis毫秒
3)Join(long millis, int nanos) 等待该线程终止,最长时间为millis毫秒+nanos纳秒
线程的中断
在一个线程执行时,另一个线程可以调用对应的Thread对象的interrupt()方法来中断它
代码的原子性
即一段代码一旦开始执行,则必须等到该段代码运行结束,其它线程才能调用该段代码;即该段代码是一个整体,不能执行到一半的时候进行线程的切换
同步代码块与同步方法即保证了代码的原子性,只需要利用synchronized关键字
线程的同步机制
wait()/notify()/notifyAll(),只能在synchronized方法中调用,即先取得对象的锁标记;notify()只能唤醒同一对象监视器中调用wait()的线程,且notify()唤醒在此对象监视器上的单一线程,notifyAll()可以唤醒在此对象监视器上的所有线程
伪代码如下:
synchronized(obj){
while(!condition){
obj.wait();
}
//dosomething
}
Synchronized(obj){
condition =ture;
obj.notify();
}
- 【Java多线程】多线程死锁
- Java 多线程
- java 多线程
- java多线程
- JAVA多线程
- java多线程
- JAVA多线程
- java多线程
- JAVA 多线程
- Java多线程
- java多线程
- JAVA 多线程
- Java 多线程
- Java 多线程
- java多线程
- Java 多线程
- Java多线程
- java 多线程
- Codeforces Round #196 (Div. 2) / 337C Quiz (贪心&快速幂取模)
- Javascript中最常用的55个经典技巧
- win7 win8常用工具软件 -驱动+光盘+系统安装+硬盘检测
- Shifting chars in string
- MemCache深入学习(一)
- java 多线程
- 性能分析工具gprof介绍
- android按返回键,弹出退出提示对话框,并退出应用程序。
- TextKit学习(三)NSTextStorage,NSLayoutManager,NSTextContainer和UITextView
- 调制解调笔记
- COCOS2D-X Lua 面向对象编程
- 实例二:Ajax返回Json在Java中的实现
- 基于TI Davinci架构的双核嵌入式应用处理器OMAPL138开发入门(TI达芬奇双核开发资料 [ .
- 数据结构 二叉树及中序、先序和后序输出