随着多核CPU的产生,多线程应用程序在程序开发过程中的作用越来越重要了。所谓多线程就是一个进程任务又多个线程并发完成,这就像日常生活中,将一项任务划分成若干子任务,并发的执行,这样不仅提高了程序的相应特性,而且提高了资源的利用率。但是滥用多线程也同样会导致问题的产生,比如降低程序的执行效率。所以我们应该面对的具体任务来进行具体分析。对于那些可以并发执行的任务,我们可以考虑使用多线程编程来提高程序的响应。但是对于那些不能并发执行的任务就不要使用多线程来解决。
1.多线程的实现方式
多线程的实现方式有两种分别是继承Thread类和实现Runnable接口。这两种实现方式各有优缺点,我们经常用的实现方式还是第二种。原因是根据Java单继承的语法特点,若线程子类继承了Thread类的话,它就无法再去继承别的父类,这将大大限制子类的应用。但是对于实现Runnable接口这种方法来说,它只是让线程类多扮演了一种角色,多附加了一项重要的功能,不会影响其他,只是该子类的对象并不是一个线程,只是在这个类中通过实现run方法来实现线程需要完成的任务。
2.线程的使用
首先应创建一个线程对象,所有的线程操作都将在这个线程对象基础之上来完成。我们同过start()方法来启动新线程。与servlet相似,线程也是具有生命周期的,它包括新建、等待、运行、等待\阻塞、死亡这五个状态。关于线程的使用包括睡眠、优先级、让步(yield/join),守护。
3.同步线程
我们通常会使用同步方法来解决多线程并发可能带来的问题。进入同步方法执行的线程会获得同步方法所属对象的锁,这样子的话其他线程将无法执行被锁对象的同步方法了。