2-线程的基础

2019-11-27  本文已影响0人  极客123

1.进程和线程的区别:

一个程序至少有一个进程,一个进程至少有一个线程

2.概念:

进程:系统进行分配和管理资源的基本单位
线程:进程的一个执行单元,线程被称为轻量级进程,线程是程序执行的最小单位

对于java代码中出现的堵塞问题可以通过jconsole 查看 如下图(会看到具体的行数):


image.png

线程的状态:
参考源码Thread中state属性: 六种

image.png

Demo类

import org.omg.PortableServer.THREAD_POLICY_ID;

import java.io.IOException;

public class T_state {

    private static Object o = new Object();

    public static void main(String[] args) throws InterruptedException {


        /**
         * 第一条线程启动后等待较长时间,并将o对象锁定
         */
        Thread t1 = new Thread(() -> {
            synchronized (o) {
                try {
                    Thread.sleep(100000L);
                } catch (InterruptedException e) {
                }
            }
        });

        t1.start();

        /****
         * 线程2启动去获取o对象的锁
         */
        Thread t2 = new Thread(() -> {
            synchronized (o) {

            }
        });
        t2.start();

        /**
         * 主线程等待一下,让线程进入相应的状态
         */
        Thread.sleep(100L);

        /**
         * 查看线程状态:也可以通过jconsole查看
         */
        System.out.println(t2.getState());

    }

}

通过线程池启动一个线程

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class T_create {

    public static void main(String[] args) {
        ExecutorService ex = Executors.newSingleThreadExecutor();
        //通过线程池启动一条线程
        ex.execute(()->{
            System.out.println("=========="+ Thread.currentThread().getName());
        });
    }
}
上一篇 下一篇

猜你喜欢

热点阅读