前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >并发基本概念介绍

并发基本概念介绍

作者头像
代码改变世界-coding
发布2018-07-03 13:48:03
3140
发布2018-07-03 13:48:03
举报
文章被收录于专栏:java相关

1.线程的几种状态

线程有以下几种状态:

1.NEW:已经创建,但是还没有执行,如以下代码输出结果为NEW

代码语言:javascript
复制
Thread thread = new Thread();
System.out.println(thread.getState());

2.RUNNABLE:正在运行的线程,如以下代码输出为:RUNNABLE

代码语言:javascript
复制
final Thread thread = new Thread(){
      @Override
      public void run() {
          System.out.println(this.getState());
      }
  };
  thread.start();

3.BLOCKED:正在等待获取锁的线程,这种需要两个线程同时访问同步方法:如下代码所示: private static final Object LOCK = new Object();

代码语言:javascript
复制
public static void main(String [] args){
    Thread thread = new Thread(){
        @Override
        public void run() {
            lock();
        }
    };

    Thread thread2 = new Thread(){
        @Override
        public void run() {
            lock();
        }
    };
    thread.setName("线程1");
    thread2.setName("线程2");
    thread.start();
    thread2.start();
}

public static void lock(){

    synchronized (LOCK){
        try {
            Thread.sleep(1000000);
        }catch (Exception e){

        }
    }
}

执行以上程序,使用jstack可以看到如下结果:

可以看到线程1的状态是BLOCKED,线程2的状态是TIMED_WAITING

4.WAITING:由于调用了Object.wait、Thread.join或者LockSupport.park方法处理等待其他线程唤醒的状态

5.TIMED_WAITING:指定等待时间的等待状态

6.TERMINATED:已经完成的线程

代码语言:javascript
复制
Thread thread = new Thread(new Runnable() {
        public void run() {
        }
    });
    thread.start();
    try {
        thread.join();
    }catch (Exception e){
    }
    System.out.println(thread.getState().name());

以上代码执行结果:TERMINATED

参考:java.lang.Thread.State

2.同步和异步

同步和异步是用来行用方法调用的两个词,同步调用一个方法时,只有在方法执行结束之后才会返回执行后面的代码,而异步调用时候,无论调用的方法有没有执行完,调用的线程都会返回继续执行后面的代码。

3.阻塞和非阻塞

阻塞和非阻塞我认为是和同步和异步同一种概念针对不同对象的两种说法,前者是针对线程而讲的,当多个线程访问共享资源,当有一个线程正在访问,而其他线程正在等待的状态就称为阻塞。反之为非阻塞。最常见的阻塞现象是添加synchronized关键字。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-08-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.线程的几种状态
  • 2.同步和异步
  • 3.阻塞和非阻塞
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档