0
点赞
收藏
分享

微信扫一扫

线程,主线程 子线程

思考的鸿毛 2022-04-21 阅读 99
java

线程的先后不分

线程是个动态的过程 t1 t2 t3 这三个线程是由主线程执行创造出来的 所以叫子线程

新建 就绪 运行 堵塞

线程有独立的栈

线程中常见的属性:

1 id JVM进程内部分配给唯一的id只能get 不能set thread,getID 就像身份证号 出生就被分配 无法修改

2 name 线程的名字 可以设置

public class Test {
    static class MyThread extends Thread{
        public MyThread(){
            setName("玛卡巴卡");//super(“我是玛卡巴卡”) 构造方法
        }

        @Override
        public void run() {
            System.out.println(this.getName());
        }

        public static void main(String[] args) {
            Thread thread=Thread.currentThread();
            System.out.println(thread.getName());
            MyThread t1=new MyThread();
            t1.start();
            MyThread t2=new MyThread();
            t2.start();
        }
    }
}

线程的状态:新建——就绪——运行——结束  阻塞

理论上和java代码实际上看到的状态

 java中的枚举enumeration

线程状态只能获取 不能设置 但是我们可以通过代码影响他

线程可以get/set自己的优先级

注意:只是建议 不能强制

前台线程 VS 后台线程    daemon(精灵)后台

前台线程:做交互  例如:1线程响应用户点击(前台)  2 线程去后台下载歌曲(后台)

我们创造出来的线程默认是前台线程 除非修改

sout(t.isDaemon() )  true 为后台

所有前台线程都退出的时候 JVM进程也就退出了 和后台线程 和主线程没关系

总结 线程的场景属性通过Thread对象进行操作

id name 状态 优先级 前/后台线程

Git。。。。

javac.exe java.exe 

jconsole.exe JVM 运行的情况 内存 类加载 线程情况

TimeUnit.SECONDS.sleep(1) 睡眠一秒

 从线程的状态的角度 调用sleep就是让当前线程运行——阻塞

Thread.currentThread() 

线程内容总结:如何在代码中创建线程 线程在底层的原理(OS+执行流)

县城结果的随机性  常见属性 相关工具:debug jconsole 

Thread 常见方法sleeo  currentThread()

在没有多线程(执行流)+没有外部输入的情况下 程序的运行其实就是一个状态机

栈维护了一个方法流 

栈:当前执行流的当前时刻(时间停止状态时)的状态框有哪些 现实方法的调用次序

框:栈帧(frame)装的就是运行该方法时需要的一些临时数据(主要就是一些临时变量)

举报

相关推荐

0 条评论