第五章使用线程----复习笔记

使用线程

在Java中使用线程

线程是进程的基本调度单位
Java提供Thread类来实现多线程

多线程的基本概念

微处理器将内存分配给应用程序执行的进程,进程中所有线程都共享相同的地址空间。

多线程的优点和缺点
优点:
改进性能
最小化系统资源使用
简化程序结构
缺点:
竞争情况
死锁情况
锁饥饿
Thread类
常用方法:
int getPriority() : 返回线程的优先级
boolean isAlive() :确定线程是否还在运行
static void sleep(long milliseconds) :使线程暂停运行指定的一段时间
String getName() :返回线程的名称
void start() :通过调用run()方法启动线程
static Thread currentThread() :返回当前正在执行的线程对象
public final void join () : 允许线程等待直到调用该方法的线程为止
void interrupt():用于使线程中断
static boolean interrupted() ;用于确定该线程是否被中断
线程的生命周期
  • 新创建

  • 可运行:当start()方法被调用时,线程进入可运行状态。start()方法将线程的控制权交给操作系统,此时线程可运行但并未在运行,它需要排队等候处理器时间;直到操作系统有足够的资源后,调用线程的run()方法,此时才为运行状态。

  • 不可运行:以下几种情况处于“不可运行状态”
    休眠sleep()方法
    等待:调用object类的wait()方法;直到其他线程调用object类的notify()或notifyAll()方法,此线程进入“可运行”状态
    锁定:
    主线程等待:join()方法
    正被其他线程阻止:
    如果线程被I/O操作阻止,进入不可运行状态

  • 死亡 :
    ①run()方法中的语句全部执行完毕
    ②将线程对象设置成null
    ③调用stop()方法

创建线程

继承Thread类:重写run()方法,调用start()方法时自动调用run()方法
实现Runnable接口

  • 当一个类想要创建线程,但它已经继承了另一个类(例如已经继承了JFrame类),因为Java只支持一个类只能继承一个类,不支持多继承,所以我们使用Runnable接口来解决。Runnable接口仅包括run()方法,启动线程时默认执行此方法。

  • 调用run()方法时,该线程脱离主线程控制,与主线程并行执行。

  • 实现Runnable接口的类不能直接创建Thread类的实例,需要作为参数包装到Thread类的构造函数中,新线程对象通过调用start()方法开始执行。

 public static void main(String args[])
 {
      CountdownTimer obj=new CountdownTimer();
      Thread CountdownThread=new Thread(obj);
      CountdownThread.start();
 }
了解线程的优先级
设置线程优先级

通过Thread类的setPriority()方法设置其优先级
public final void setPriority(int newPriority)
优先级的范围介于MIN_PRIORITY和MAX_PRIORITY之间(即1-10)

实现线程同步
1.使用同步方法

synchronized关键字能够同步方法,当线程在同步方法内的时候,所有试图在同一时间调用方法的其他线程必须等待。

class employee{
   public synchronized int process(){
     //code to process the salary
    }
}

在上述代码中,process()是同步方法,不能在一个时间被多个线程访问

2.同步代码块
synchronized(obj)
{       
    /*statement to be synchronized*/
}
实现线程间通信
方法:
  • wait(): 使当前线程等待,直到其他线程调用notify()方法。用于释放临时锁
  • notify():唤醒正在等待的线程。如果有多个,随机选一个。
  • notifyAll():唤醒正在等待的所有线程。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值