多线程编程1

1、 为什么要使用多线程?
单个线程可以同时运行多个不同的线程,执行不同的任务(在相同的时间段内执行不同的任务)
使用动机如: 使UI响应更快,利用多处理器系统,简化建模、执行异步或者后台处理等等

2、 线程的状态
初始状态New——就绪状态start——运行状态run——阻塞状态{wait,锁,sleep}——结束状态

3、 建议使用Runnable实现多线程,最终都是通过调用thread.start()来使用线程处于可运行状态。

4、 方法start():无需等待run()方法体执行完毕而直接继续执行下面的代码;
run()类的一个普通方法,还是在主线程里执行调用,如果直接调用则没意义了

5、 Timer和TimerTask的使用
每个Timer对象都对应一个后台线程,TimeTask是一个抽象类,实现了runnable接口,它的子类代表一个可以被Timer计划的任务。适用于轻量级的定时功能,但其时效性效果并不是特别强
Timer类的两个主要方法:schedule(...)时间间隔稳定性scheduleAtFixedRate(...)频率稳定性。
Timer的终止方法:{调用cancel,将timer设为daemon,置timer的引用为null,调用System.exit()方法)

JDK1.5以上建议少用Timer、TimerTask,而多使用ScheduledThreadPoolExector
Callable/Future、 ExectorService等东东(下一部分会介绍)

多线程编程的要点:
线程间的通讯、并发控制、资源的共享与释放等

注意点:
1/ java编写的程序都运行在JVM中,在JVM内部程序的多任务是通过线程来实现的。没启动一个Java应用程序则会启动一个JVM进程,在同一个JVM中有且只有一个进程那就是它自己。
2/ 每个线程都可以被标记为一个守护线程,当某个线程中运行的代码创建一个新Thread对象时,该线程的初始优先级被设定为创建线程的优先级,并且当且仅当创建线程是守护线程时新线程才是守护线程。

3/ JVM推出的情况: 、

4/ 事实上所有的多线程代码执行顺序都是不确定的,每次执行的结果都是随机的,因此,只有乱序执行的代码才有必要设计为多线程。
熟悉Thread类的API是进行多线程编程的基础
实现runnable进行多线程编程的好处是适于多继承与共享变量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值