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

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

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

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

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

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

 

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

 

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

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

1.通过继承Thread重写run方法

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

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();
    }
}

猜你喜欢

转载自www.cnblogs.com/Alemand/p/9816197.html
今日推荐