线程的调用
来源:互联网 发布:美国税改最新消息知乎 编辑:程序博客网 时间:2024/04/28 03:41
线程的调用
一、 线程同步通信
为避免死锁,就应该让线程在进入阻塞状态时尽量释放其锁定的资源,以为其他的线程提供运行的机会,Object类中定义了几个有用的方法:wait()、notify()、notifyAll()。
1wait():被锁定的对象可以调用wait()方法,这将导致当前线程被阻塞并释放该对象的互斥锁,即解除了wait()方法当前对象的锁定状态,其他的线程就有机会访问该对象。
2notify():唤醒调用wait()方法后被阻塞的线程。每次运行该方法只能唤醒一个线程。
3notifyAll():唤醒所有调用wait()方法被阻塞的线程。
限制公共缓冲区不能被两个线程同时访问,需要使用互斥锁,即用synchronized来标识同步资源。
二、Timer和TimerTask
1java.util包中的Timer和TimerTask类也可实现多线程
2Timer类实现的是类似闹钟的功能,也就是定时或者每隔一定时间间隔触发一次线程。
3TimerTask类是一个抽象类,该类实现了Runnable接口,具备多线程的能力。
4通过继承TimerTask类创建子类,使该子类获得多线程的能力,将需要多线程执行的代码书写在run方法内部,然后通过Timer类启动线程的执行。
使用Timer和TimerTask组合实现的多线程。
class TimerTask1 extends TimerTask {
public void run() {
try{
for(int i = 0;i < 5;i++){
Thread.sleep(1000);
System.out.println("Run" + i);
}
}catch(Exception e){}
}
}
schedule()方法
public void schedule(TimerTask task,Date time):该方法的作用是在到达time指定的时间或已经超过该时间时执行线程task。
Date d = new Date(2009-1900,10-1,1,10,0,0);
t. schedule(task,d);
public void schedule(TimerTask task, Date firstTime, long period):在时间到达firstTime开始,每隔period毫秒就启动一次task指定的线程,这种方式会重复启动线程。
Date d = new Date(2009-1900,10-1,1,10,0,0);
t. schedule(task,d,20000);
- 线程的调用
- 线程的调用
- 线程的异步调用
- 子线程调用父线程的问题
- 线程、委托的异步调用
- Java线程池的调用
- 线程的创建和调用
- Java线程池的调用
- 线程池的调用逻辑
- Java线程调用的随机性
- 线程调用
- 跨越线程调用窗体上的控件
- 委托的调用方法与执行线程
- 利用线程调用程序执行的方法!
- 如何获取当前线程的调用堆栈
- C#线程调用带参数的方法
- C#线程调用带参数的方法
- Vs2005 安全的线程调用举例
- Jsp乱码解决方案大全
- 你不能忽略的10个web设计元素
- 从技术角度看中国谁能玩转大数据技术
- 成绩-男
- 实例,用模式一实现用户登录功能
- 线程的调用
- JSP常见指令
- Tomcat目录结构
- Posix线程编程指南(2)
- Linux ELF文件装入与执行概述
- 集合与列表2
- JSPServlet会话跟踪机制
- 有向图中顶点的路径问题
- page,request,session,application四个域对象的使用及区别