Java 并发编程学习1线程的创建和定时器的使用
来源:互联网 发布:农产品进出口数据 编辑:程序博客网 时间:2024/06/03 13:04
1、线程在Java JDK中的关系如下:
publicinterface Runnable {public abstract void run();}
Thread类中有
public void run() { if (target != null) { target.run(); } }
其中target是一个runnable对象。
如下是T和Tread类:
publicclass Thread implements Runnable {.......... }
其中该T和read中都有一个各种参数的init方法进行一些参数的初始化工作。
init(...);
从中,看出我们向一个Thread构造方法中传入一个runable对象的时候,只要这个对象不为空,则执行的是这个runable对象的run方法,更加符合面向对象的思维。推荐使用。
//用匿名内部类启动线程方式1new Thread(){@Overridepublic void run() {while(true){try {Thread.sleep(1000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println("线程"+Thread.currentThread().getName()+"正在运行中");}};}.start();//用匿名内部类启动线程方式2new Thread(new Runnable() {@Overridepublic void run() {while(true){try {Thread.sleep(1000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println("线程"+Thread.currentThread().getName()+"正在运行中");}}}).start();<span style="color:#ff0000;"></span>
或者定义线程的子类复写run方法,然后定义该对象的start方法。要么实现runable接口的子类(复写子类的run方法这就是线程要做的事情的一个对象),把他作为参数传入线程的构造方法中,然后调用该线程子类对象的start方法完成使得线程处于可运行状态,等待调度。
注意:一个对象首先是执行该对象的方法或操作该对象的属性,如果该对象没有才考虑父类。子类和父类有相同的方法,子类把父类的覆盖掉,只是执行子类的同名方法。
运行结果:
2、定时器的使用
(1)每隔3s运行一次
new Timer().schedule(new TimerTask() {@Overridepublic void run() {System.out.println("定时任务正在运行中");}}, 0,3000);
(2)定时任务交替进行,根据业务逻辑具体设计
new Timer().schedule(new TimerTask() {@Overridepublic void run() {System.out.println("定时任务11111正在运行中");new Timer().schedule(new TimerTask() {@Overridepublic void run() {System.out.println("定时任务2222正在运行中");}}, 0,1000);}}, 0,3000);
运行结果:
0 0
- Java 并发编程学习1线程的创建和定时器的使用
- Java并发编程:(1)进程和线程的由来、进程的创建、线程的创建
- 并发编程学习总结(一) :java 创建线程的三种方式的优缺点和实例
- Java并发编程-03-守护线程的创建和运行
- Java并发编程:线程和进程的创建
- Java并发编程:线程和进程的创建(转)
- Java并发编程:线程的创建和执行
- Java并发编程:线程、进程的创建
- 【Java并发学习】之线程的创建
- Java并发编程:线程池的使用
- Java并发编程:线程池的使用
- Java并发编程:线程池的使用
- Java并发编程:线程池的使用
- Java并发编程:线程池的使用
- Java并发编程:线程池的使用
- Java并发编程:线程池的使用
- Java并发编程:线程池的使用
- Java并发编程:线程池的使用
- J2EE是什么?
- JavaFX 使用FAQ
- android启动流程
- 深入浅出的讲解傅里叶变换(2)
- JMX 入门
- Java 并发编程学习1线程的创建和定时器的使用
- android xml 中组件只能显示一个
- Socket网络编程学习笔记(2):面向连接的Socket
- hdu 5137 2014ACM/ICPC亚洲区广州站K 最短路
- Thread类的join方法使用
- nyoj32组合数(DFS)
- 10种方法使你的IE如现代浏览器一般
- java swing总结
- JDBC: DAO&VO