zoukankan      html  css  js  c++  java
  • 多线程(下)

    匿名内部类方式使用多线程:
    格式:
    new 类名或者接口名(){
    };
    本质:是该类或者接口子类对象

    定时器

    定时器是一个应用十分广泛的线程工具,可以用于调度多个定时任务以后台的方式执行,在java中,可以通过Timer和timerTask类来定义调度的功能
    构造方法:
    Timer()创建一个新定时器
    Timer(Boolean isDaemon) 创建一个新定时器,可以指定其相关的线程作为守护程序运行
    Timer(String name)创建一个新定时器,其想爱你高管的线程具有指定的名称
    Timer(String name,boolean isDaemon):创建一个定时器,与其相关的线程具有指定的名称,并且可以自定义
    方法:
    cancel():终止此定时器.丢弃所有当前已安排的人任务
    purge():从此定时器的任务中移除所有已取消的任务
    schedule(TimerTask task,Date time):安排在指定的时间执行指定的任务
    schedule(TimeTask task,Date firstTime,long period) :安排指定的任务在指定的时间开始进行重复的固态延迟

    多线程有几种实现方案,分别是那种?

    1.继承Thread类
    2.继承Runnable接口
    3.扩展:实现Callable接口.(这个得和线程池结合)

    2.同步有几种方式,分别是什么?

    两种,1.同步代码块  2.同步方法

    thread和Runnable的区别
    1.Runnable可以实现共享数据,而Thread不能
    2.Runanble能解决多重继承问题,而Thread只能单一的继承
    3.实例化方式不同
    线程常用的方法
    start()开启线程 并且执行run()方法
    currentThread():获取当前线程对象
    getName():获取当前线程对象的名称
    setName(String name):给线程设置名称
    sleep(Long milln):让线程在指定的毫秒内休眠
    join():等待该线程结束
    Yeild():暂停当前线程,让其他线程执行
    interrupt():中断线程
    interrupted():判断线程是否中断,如果线程中断返回true.否则返回false
    setPriority(int newPriority):设置线程的优先级,优先级范围是1-10,默认是5
    wait():让当前线程处于永久暂停装填并且释放锁对象
    notify():唤醒处于暂停状态的一个线程
    notifyAll():唤醒所有处于暂停状态的线程
    线程的安全问题
    1.多线程的环境
    2.他有共享数据
    3.多线程对共享数据进行了操作

    线程安全问题的解决方式/线程同步的方式
    同步代码块
    sychronized(锁对象){//上锁
    //存在问题的代码/要同步的代码
    }
    同步方法:
    public synchronized void 方法名称(){//上锁
    //存在问题的代码/要同步的代码
    }
    锁对象
    lock锁:
    void lock() 获得锁
    void unlock()释放锁
    同步代码块的锁对象:
    1.Object对象
    2.继承Object对象的类
    3.this
    同步方法的锁对象
    1.本类的对象this
    静态同步方法的锁对象
    1.类名.class
    线程的通信
    wait()
    notify()
    notityAll()
    注意:
    以上三个方法必须在同步方法或者同步代码块中使用,否则会报错,并确要是一个锁对象

  • 相关阅读:
    给你一个长度为 n 的数组,其中只有一个数字出现了大于等于 n/2 次,问如何使用优秀的 时空复杂度快速找到这个数字。
    给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现偶数次。找出那个只出现了一次的元素。
    python虚拟环境配置
    测试环境配置
    使用ELK Stack收集kubernetes集群内的应用日志
    vue 禁止遮罩层下的页面滑动
    vue 把 java 传过来的流文件 转成apk、xls等
    vue 中使用 webSocket 收发数据, 增加 " 心跳机制 " 保持连接.
    webstrom 根据当前编辑文件定位左侧目录
    MySQL 8.0新特性详解(转)
  • 原文地址:https://www.cnblogs.com/mrr19990327/p/14205352.html
Copyright © 2011-2022 走看看