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()
    注意:
    以上三个方法必须在同步方法或者同步代码块中使用,否则会报错,并确要是一个锁对象

  • 相关阅读:
    Ubuntu 16.04安装Eclipse
    Ubuntu 16.04安装Maven
    Ubuntu 16.04安装Tomcat 8
    CentOS 7安装过程
    CentOS 6.9安装过程
    Linux磁盘分区方案(转)
    CentOS 6.9使用sudo时出现:“...不在 sudoers 文件中,此事将被报告”的问题解决
    VMware 12安装CentOS 6.9时出现:The centos disc was not found in any of your drives.Please insert the centos disc and press OK to retry
    Ubuntu源码下载方法
    汇编教程书籍收集
  • 原文地址:https://www.cnblogs.com/mrr19990327/p/14205352.html
Copyright © 2011-2022 走看看