zoukankan      html  css  js  c++  java
  • 多线程

    public class WorldCount {
        public static void main(String[] args) {
            MyThread m1 = new MyThread(); // 创建了一个新的线程对象,存在heap中
            YouThread m2 = new YouThread();
            m1.start(); // 创建一个新的线程,并告诉CPU,该线程已经准备完毕,可以调度。
            m2.start();// start 是 非 阻塞的,可以继续运行。
    //        m2.setDaemon(true);// 设置 m2 为守护线程。//或在 将这个设置为 线程对象的一个属性,初始化的时候就自动配置好。// 由此可以看出,守护线程也是子线程的一种,由主线程创建。
            // t1.run() 如果直接运行该方法,那么只是主线程的内的一次普通的对象方法调用,没有产生新的线程。主线程会把该方法入栈,运行完毕之后才会出栈;
            try {
                m1.join(); // 将 子线程的 运行(时间?!?!)加入主线程(的运行时间?)。也就是说,将 主线程阻塞在此,直到子线程运行结束。
            } catch (Exception e) {//理论上,子线程还是在他自己的线程内运行的。只是,主线程,在等待着他的结束,然后才继续运行。
    
            }
        }
    }
    
    class MyThread extends Thread {
        //    public MyThread(){
    //        this.setDaemon(true);// 设置 线程对象 默认为守护线程,守护所有的非守护线程。当非守护线程结束之后,它随之结束。
    //    }
        @Override
        public void run() { // 当 CPU 调度到该线程时,运行该方法
            while (true) {
                System.out.println("MyThread");
                yield(); // 暂时停止抢占 CPU ,但该命令之后,立刻开始恢复抢占。
            }
    //        try{
    //            Thread.sleep(5000); //休眠 5 s ,在此时间内,不进行cpu抢占。
    //        }catch(Exception e){
    //
    //        }
        }
    }
    
    class YouThread extends Thread {
        @Override
        public void run() {
            while (true) {
                System.out.println("YouThread");
                yield();
            }
        }
    }
    
  • 相关阅读:
    python3.x元组打印错误 TypeError: unsupported operand type(s) for %: 'NoneType' and 'tuple'
    LoRa---她的简介和她的专业术语
    单片机程序在内存和FLASH中的空间分配
    STM32烧录的常用方式
    【原创】MapReduce编程系列之表连接
    Maven基础配置—本地Maven配置
    Maven基础配置--nexus私服配置
    OSGI入门笔记
    Maven仓库搭建--nexus私服
    javascript基础 方法 函数 闭包 集合
  • 原文地址:https://www.cnblogs.com/jijizhazha/p/7735219.html
Copyright © 2011-2022 走看看