• 线程


    1.创建线程

      继承Thread类,重写run方法;(run方法不能抛出异常,因为Thread类的run方法没有抛出异常)

      实现Runnable接口,实现run方法;

    2.执行线程

      创建Thread实现类对象,调用start()方法启动线程(方式一);

      创建Thread实现类对象,把Runnable实现类的对象作为参数传递,调用Thread对象的start()方法;

    3.常用方法

       Thread(String name)     初始化线程的名字

       getName()               返回线程的名字

       setName(String name) 设置线程对象名

       sleep()                    线程睡眠指定的毫秒数(静态方法,调用该方法的线程睡眠

       currentThread()         返回CPU正在执行的线程的对象(静态方法,返回调用该方法的线程对象

       getPriority()                返回当前线程对象的优先级   默认线程的优先级是5

       setPriority(int newPriority) 设置线程的优先级,虽然设置了线程的优先级,但是具体的实现取决于底层的操作系统的实现(最大的优先级是10 ,最小的1 , 默认是5)。

    4.线程安全

        同步代码块

      sychronized(锁对象){

        需要被同步的代码

      }

      锁对象可以是任意对象;

      sleep方法不会释放锁;

      锁对象必须是共享的对象;

      同步函数

      用sychronized修饰函数;

      非静态的同步函数的锁对象是this对象;

      静态的同步函数的锁对象是所属类的字节码文件(class对象)

    5.wait和notify

      wait和notify方法是属于Object对象的;

      wait和notify方法必须要在同步代码块或者是同步函数中才能使用;

      wait和notify方法必须由锁对象调用;

      wait():一个线程如果执行了wait方法,那么该线程就会进入一个以锁对象为标识符的线程池中等待,并释放持有的锁;

      notify():一个线程如果执行了notify方法,那么该线程就会唤醒以锁对象为标识符的等待线程中的一个;

    6.interrupt

      和notify比较,interrupt是由线程对象调用的,而不是由锁对象调用的,这样可以指定要终止的线程,并且interrupt方法会抛出一个InterruptException异常。

    7.守护线程

      守护线程随着主程序的存在而存在,随主程序的停止而停止。

      设置守护线程setDeamon

    8.join

      加入所在的线程。并且必须等待该线程支撑完毕才能继续执行下面的语句。

  • 相关阅读:
    nginx的基础使用
    npm的一些细节
    webpack打包多页面
    右键打开命令窗口
    本地建立服务器
    would you please...could you please...两句区别是什么?
    Mockito/PowerMockito Straige Issues
    pip install pyinstaller
    20171211
    Chrome 扩展
  • 原文地址:https://www.cnblogs.com/juaner767/p/5651541.html
Copyright © 2020-2023  润新知