Java回炉之多线程(一)

本文是Java回炉系列的第一篇,深入探讨了Java多线程的各个方面,包括创建线程的方法、线程的优先级、线程控制、生命周期、状态转换、同步机制、Lock锁、等待唤醒机制、线程组和线程池的使用。详细讲解了各种方法和概念,如Thread.sleep(), join(), setDaemon(), synchronized关键字以及ReentrantLock的应用。" 78943939,7432559,Android监听第三方app推送并获取Intent详情,"['Android开发', 'Intent解析', '系统权限', 'Notification监听']
摘要由CSDN通过智能技术生成

Java回炉之多线程(一)

创建方法

  • 继承Thread
  • 实现Runable

设置获取线程名

  • setName()
  • getName()
  • 默认线程名:Thread-x(x为编号)

获取当前线程

  • Thread.getCurrentThread()

优先级

  • 默认是5,最小1,最大10
  • getPriority():获取优先级
  • setPriority(int):设置优先级

线程控制

  • Thread.sleep(long):让线程睡眠指毫秒值
  • join():调用者执行完毕后再执行其他线程
  • Thread.yield():让线程执行更和谐,但不能保证均分
  • setDaemon():标记调用者为守护线程(代码执行者的守护线程;start()之前调用;被守护线程结束后,守护线程结束)
  • stop():让线程停止(不安全)
  • interrupt():让线程中断,并抛出异常

生命周期

  • 新建:创建对象
  • 就绪:有执行资格,但没执行权
  • 运行:有执行资格,有执行权
  • 阻塞:没有执行资格,没有执行权
  • 死亡:对象等待回收
    生命周期

状态转换

状态转换

同步代码块

  • 参数在同步代码块内线程安全
  • 用同一把锁(锁对象为同一个对象)
  • 线程很多时,判断锁降低运行效率
  • 锁对象可以使任意对象
synchronized(obj){
}

同步方法

  • 同步方法的锁对象是this
  • 静态同步方法的对象是class
private synchronized void method(){
}

Lock锁

实现类:ReentrantLock
- lock():获取锁(上锁)
- unlock():释放锁
一般lock()try之前调用,unlock()finally中调用。
- 示例

private void methodWithSync(){
    synchronized(this){
        //code...
    }
}
private void methodWidthLock(){
    Lock lock=new ReentrantLock();
    lock.lock();
    try{
        //code...
    }finally{
        lock.unlock();
    }
}

等待唤醒机制

生产者与消费者
- wait():等待
再次被唤醒时从此处之后开始运行。
- notify():唤醒单个线程
- notifyAll():唤醒所有线程
上述方法由“锁”来调用

线程组

  • getThreadGroup():获取调用者(线程)所在线程组
  • 默认情况下,所有的线程都属于同一个组
  • new Thread(ThreadGroup,Runnable,NameString):在自定义组中创建线程

线程池

//创建线程池
ExecutorService pool = Executor.newFixedThreadPool(2);
//请求线程执行
pool.submit(new Runnable(){});
pool.submit(new Runnable(){});
pool.submit(new Callable(){});
//结束线程池
pool.shutDown();

定时器

  1. Timer
    • Timer():创建定时器
    • schedule(TimerTask task,long delay):延迟后执行
    • schedule(TimerTask task,long delay,long period):延迟后之情,每隔一段时间执行一次
    • cancle():终止任务
  2. TimerTask
    • run():任务执行体
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值