zoukankan      html  css  js  c++  java
  • JUC学习笔记--Thread多线程基础

    实现多线程的两种方法

    java 实现多线程通过两种方式1.继承Thread类 ,2.实现Runnable接口

        class Newthead extends Thread{
            public void run(){
                System.out.println("thread run");
            }
        }
        class Newthead implements Runnable{
            @Override
            public void run(){
                System.out.println("thread run");
            }
        }
    

    用Runnable还是Thread?

    因为java 类是单继承的,但却可以实现多个接口,所以推荐使用Runnable

    启动线程

       public static void main(String[] args) throws IOException {
            Thread thread = new Thread(new Newthead());
            thread.start();
            System.in.read();
        }
    

    当我们需要启动线程的时候需要调用start()方法,start()方法内部调用run()方法。
    当你直接调用run()方法的时候,只会是在原来的线程中调用,没有新的线程启动。

    终止线程

    Thread提供了suspend()、resume()和stop()来对线程进行暂停,恢复和停止操作。但是这些方法都是废弃的
    因为suspend()在调用后,线程不会释放已经占有的资源(比如锁),而是占有着资源进入睡眠状态,这样容易引发死锁问题。
    stop()方法在终结一个线程时不会保证线程的资源正常释放。

    安全的终止线程

    安全的终止线程可以通过变量的形式,通过volatile保证多线程的可见性

    Thread.join()

    如果一个线程A执行了thread.join()语句,其含义是:当前线程A等待thread线程终止之后才从thread.join()返回。线程Thread除了提供join()方法之外,
    还提供了join(long millis)和join(long millis,int nanos)两个具备超时特性的方法。
    这两个超时方法表示,如果线程thread在给定的超时时间里没有终止,那么将会从该超时方法中返回。

    线程状态

    thread的状态如下:

    1. NEW 初始状态,线程被构件,但是还没有调用start()方法
    2. RUNNABLE 运行状态,hava线程将操作系统中的就绪和运行两种状态统称为 运行中
    3. BLOCKED 阻塞状态,表示线程阻塞于锁
    4. WAITING 等待状态,标示线程进入等待状态,进入该状态标示当前线程需要登台其他线程做出一些特定的动作(通知或中断)
    5. TIME_WAITING 超时等待状态,该状态不同于waiting,它是指定的时间自行返回的
    6. TERMINATED 终止状态,标示当前线程已经执行完毕
  • 相关阅读:
    C++11 function用法 可调用对象模板类
    2017年团体程序设计天梯赛
    CCCC 以及 hihocoder offer收割赛11 ~~~
    Wannafly Union Goodbye 2016-A//初识随机化~
    Good Bye 2016 //智商再次下线,边界爆炸.....
    连做两场goodbye2016是怎样的体验.....
    2016CCPC 合肥--最大公约数//每一年通向它的路上,多少人折戟沉沙,多少人功败垂成,有人一战成名,有人从头再来。
    2016 CCPC 合肥赛区 平行四边形//打铁记录..... 背锅还是我在行 此处@ctr 233
    补题安排及挂机....
    BZOJ3670:[NOI2014]动物园
  • 原文地址:https://www.cnblogs.com/javanoob/p/juc_thread.html
Copyright © 2011-2022 走看看