zoukankan      html  css  js  c++  java
  • java学习之多线程

    1.java中Thread类代表一个线程,两种创建线程的方法:
    1)创建Thread的子类,重写run方法;需要调用线程的start()方法启动线程;
    2)创建Runnable接口的实现类,实现接口中的run方法;

    一般推荐使用第二种方法实现多线程,原因是,首先能够实现多线程资源的共享;另外实现多线程的子类可以继承其他父类
    2.String threadName= Thread.currentThread().getName():获取当前执行线程的名字;


    3.实现Runnable接口的方式:
    3.1:首先创建实现runnable接口的实现类:必须实现run方法
    3.2 创建3.1对应的 Runnable接口的实现类对象;
    3.3:创建Thread对象,利用Thread(Runnable target)构造器创建
    3.4 调用Thread类start()方法启动线程


    4.线程生命周期相关的几个方法:
    4.1 yield()方法,若当前线程调用该方法,线程由执行状态变为可运行状态

    4.2sleep(int min)休眠,使当前线程休眠一段时间()以毫秒为单位
    4.3 join()方法,在一个线程中调用另外的线程方法,将使当前线程阻塞,等待另一个线程执行完后,再进入可执行状态

    4.4 interrupt()方法,将解除线程的阻塞状态

    已经结束的线程再次调用start方法,会抛出异常

    4.6 isAlive()方法判断线程是否活着(可运行状态或运行状态)


    5.线程安全的问题:
    5.1理解并编写出线程不安全的实例代码:多个线程访问一个共享的资源
    5.2使用synchronized 代码块解决线程安全的问题:需要在synchronized代码块中
    参照共同的一个对象

    6.关于线程间的通信:
    6.1:相关方法:wait(),notify(),notifyAll()
    6.2这些方法在同步方法中调用(synchronized)
    //如何使用两个线程交叉打印a到c,要实现交替效果??

  • 相关阅读:
    MapReduce程序遇见java.net.UnknownHostException
    吐槽下《Hadoop权威指南(第二版)》的翻译
    HFileOutputFormat与TotalOrderPartitioner
    关于hive multi group by的疑惑
    Hive解决 java.io.IOException:SerDeException:LazySimpleSerDe
    一个字符编码引发的血案
    CSS颜色代码大全
    C#中ParameterizedThreadStart和ThreadStart区别
    Sql Server REPLACE函数的使用
    QueryString的用法
  • 原文地址:https://www.cnblogs.com/zhangshitong/p/4954819.html
Copyright © 2011-2022 走看看