多线程

来源:互联网 发布:淘宝客优惠券网站建立 编辑:程序博客网 时间:2024/05/17 04:28

多线程

多线程是为了同步完成多项任务,不是为了提高运行效率,而是为了提高资源使用效率来提高系统的效率。

 

多线程的优势:

1.提高界面程序的响应速度.

2.充分利用系统资源.

 

在线程编程中,继承Thread类或实现Runnable接口的类才具备多线程的能力。

 

 

线程的生命周期与主要的线程状态:

1.   新建状态(New.

2.   就绪状态(Runnable.

3.   运行状态(Run.

4.   阻塞状态(Block.

5.   终止状态(Dead.

 

线程的优先级用1~10表示,1表四优先级最高,默认值是5,每个优先级值对应Thread类中的一个公共静态常量。

如果有多个线程在等待,并不是优先级越高就肯定越早执行,只是获得的机会更多一些,因此通常情况下,不要依靠线程优先级来控制线程的状态。

 

线程调度

1.      线程睡眠sleep()

                        i.              调用sleep()方法使线程处于睡眠,线程由运行状态进入不可运行的状态,睡眠时间过后线程再次进入可运行状态。

2.      暂停线程yield()

                        i.              调用yield()方法可暂停当前线程执行,将CPU资源让出来,允许其他线程执行。

                      ii.              Yield()的优点是保证有工作时不会让CPU闲置,主要用于编写多个合作线程,也适合于强制线程间的合作。

3.      连接线程join()

                        i.              调用join()方法可使当前线程暂停执行,等待调用该方法的线程的结束后再继续执行本线程。

4.      中断线程interrupt()

                        i.              Interrupt()方法可为线程设置一个中断标记,以便于run()方法运行时使用isInterrupted()方法能够检测到。此时,线程在sleep()之类的方法中被阻塞时,由sleep()方法抛出一个InterruptException()异常,然后捕捉这个异常以处理超时。

                      ii.              Interrupt()只是一个中断标记,并没有中断线程运行。

 

将线程标记为守护线程(后台线程)setDaemon(true);注意该方法要在线程开启前使用。和前台线程一样开启,并抢资源运行,所不同的是,当前台线程都结束后,后台线程会自动结束。无论后台线程处于什么状态都会自动结束。

原创粉丝点击