2-线程的基础

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());
        });
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容