Java多线程总结

多线程编程的优点:

  • 程序在运行时,系统自动在多个线程之间很容易的切换。
            Java中根据线程的优先级进行线程之间的切换。
  • 系统额外开销小。
            对多个进程的管理(创建、调度等)有比较大的的系统开销。由于进程的多个线程自动共享同一地址空间,所有的全局数据都可以访问,很容易实现数据共享。
  • 线程之间很容易实现通信。
            为了实现任务之间的协作,线程之间需要进行数据交换。由于进程的多个线程自动共享同一地址空间,所有的全局数据都快访问,很容易实现数据共享。
  • 线程之间会出现冲突
            由于多个线程共享一组资源,对资源的访问和修改时,有可能出现系统冲突,这时,需要解决线程同步的方法。

Java 的多线程

每个Java程序都有一个 缺省的主线程,对于Java Application,主线程是 main()方法执行的线程;对于Java Applet,由主线程指挥浏览器加载并使用Java程序。
Java语言使用 Thread类及其子类的对象来表示线程。
在Java中实现多线程的方法:
  1. 生成“java.lang.Thread”类的子类,在新类中覆盖Thread类的run()方法。
  2. 生成实现"java.lang.Runnable"接口的类,并将其实例与"java.lang.Thread"实例相关联。

Thread类实现多线程:

在Java中实现一个类具有多线程功能,只需要简单的继承Thread类就可以了。
附:
Thread类的构造方法
Thread() :创建一个线程对象。
Thread(String name) :创建一个名称为参数name的线程对象。
Thread(Runnable target) :创建一个线程对象,并以参数target为运行对象。
Thread(Runnable target,String name) :创建一个名称为参数name的线程对象,并以参数target为运行对象。
注:由于Thread类中的run()方法为空,在实际编程中,如果采用继承Thread类的方法实现多线程,可以在Thread的子类的构造方法中,通过super关键字来调用Thread类的构造方法,为线程命名。

Thread类的方法:
void start() : 启动线程对象,使之从新建状态转为就绪态。
void run() :执行线程。
void interrupt() :中断线程。
boolean isAlive() :判断线程是否处于活动状态。
void setName() :设置线程的名称。
void getName() :返回线程的名称。
void join() :等待线程结束。
int getPrirority() :返回线程的优先级。
void setPriority(int p) :设置线程的优先级。
static void yield() :暂停正在运行的线程,执行其他的线程。
static void sleep(long millis) :使当前正在运行的线程临时停止,睡眠参数millis指定的时间后继续运行。
static int activeCount() :返回当前线程所属线程组中活动线程(处于就绪状态和运行状态的线程)的数量。
注:其中start()和run()方法是执行线程最基本的方法。
        线程创建完成之后,需要调用start()方法,线程才能够执行;run()方法中的代码实现的是线程中的功能,因此Thread的子类应该重写方法。
static方法可以直接通过类名进行调用。

线程的状态(New Thread)

创建、可运行、运行中、阻塞和消亡
创建状态:使用new运算符创建一个线程后,该线程仅仅是一个空对象,系统没有分配资源,称该线程处于一个创建状态。
可运行状态:使用start()方法启动一个线程后,系统为该线程分配了除CPU外所需资源,使该线程处于一个可运行的状态。
运行中的状态:Java运行系统通过选中一个Runnable的线程,使其占有CPU并转为运行中状态。此时,系统真正执行线程的run()方法。
阻塞状态:一个正在运行的线程因某种原因不能继续运行时,进入阻塞态。
消亡状态:线程结束后是消亡状态。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值