并发系列(五)-----线程

一 简介
线程这个话题,无论是在面试中仍是在工做中会常常的碰见。而并发编程的目的就是为了在尽可能不影响程序的执行效率的状况下保证数据的安全性和正确性。要想理解线程首先要明白一些概念性的东西。面试

进程:具备必定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.编程

线程:进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程本身基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),可是它可与同属一个进程的其余的线程共享进程所拥有的所有资源.安全

一个线程能够建立和撤销另外一个线程;同一个进程中的多个线程之间能够并发执行.相对进程而言,线程是一个更加接近于执行体的概念,它能够与同进程中的其余线程共享数据,但拥有本身的栈空间,拥有独立的执行序列。并发

二 线程的状态
线程的生命周期中存在的状态有新建、就绪、运行、阻塞、死亡。Java将操做系统中的运行和就绪两个状态合并称为运行状态。Java线程在运行的生命周期中可能处于下表所示的6种不一样的状态,在给定的一个时刻,线程只能处于其中的一个状态。ide

 

 

在Java中线程的变化以及Java对应的方法以下图spa

 

 

在上图中线程的状态的变化以及操做线程的方法所有列出来了,有的是Object的方法有的是Thread的方法,有的是concurrent包下的一些方法。操作系统

三 线程的新建
线程的建立有的方式有三种分别是线程

1.经过继承Thread重写run方法code

2.经过实现Runnable接口重写run方法blog

3.经过实现Callable<T>接口重写call方法

具体代码以下

public class ThreadTest {

    static class Thread1 extends Thread{
        @Override
        public void run() {
            super.run();
        }
    }

    static class Thread2 implements Runnable{

        @Override
        public void run() {

        }
    }
   static class Thread3 implements Callable<Integer>{

        @Override
        public Integer call() throws Exception {
            return null;
        }
    }

    public static void main(String[] args) throws Exception {
        Thread1 thread1 = new Thread1();
        thread1.start();
        thread1.run();
        Thread2 thread2 = new Thread2();
        thread2.run();
        Thread3 thread3 = new Thread3();
        Integer call = thread3.call();
    }
}
相关文章
相关标签/搜索