Java多线程基础篇1

1、什么是多线程

百度百科上的解释是:多线程,是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。

在JAVA中多线程的状态有6中,分别是New、Runnable、Blocked、Waiting、Timed waiting、Terminated。其中new这个很好理解,就是创建一个新的线程,改线程还没开始运行。如果线程启动,即调用start(),那么线程状态就进入runnable,需要特别注意的是,线程处于runnable有没有运行这取决于操作系统给线程提供运行时间(这就有可能会导致在高并发的情况下,数据不安全,当然这也有相对应的解决方案)。刚接触多线程那会儿最困惑的就是阻塞和等待,感觉这两个状态都差不多,事实上并非如此,这两个状态其实差别非常大。首先是阻塞,当一个线程视图获取一个内部的对象锁,而该所被其他线程持有,那么该线程就进入阻塞状态。而等待是等待另外一个线程通知调度器一个条件,它自己进入等待状态,不同的地方在于阻塞是一个临界条件,没拿到锁的线程进入等待状态,拿到锁的线程可能因为某种条件不符合,无法往下执行,需要等待某种条件成立,然后由其他线程激活,进入runnable状态,如果能够拿到锁,那么线程会从等待的地方继续往下执行。被终止的线程一般有多个原因:1、因为run方法正常退出而自然死亡。2、run方法没有做异常处理导致意外死亡。

参考Java核心技术 卷1 基础知识 第9版
Java多线程状态

推荐文章