zoukankan      html  css  js  c++  java
  • 线程

    1线程简要描述

    1.1什么是线程?

    线程是程序执行的一条路径。程序可以理解成进程。一个进程可以包含多个线程。多线程并发执行可以提高程序效率,同时完成多个任务。

    1.2多线程应用场景

    QQ多人视频;迅雷多线程下载;电脑屏幕多人共享;服务器同时处理客户端多个请求。

    1.3并行和并发的区别

    并行:多个任务同时执行。需要多CPU。

    并发:多个任务同时发生。处理器一次只能执行一个任务。而这多个任务是轮流执行的,因为轮流的时间间隔非常的短,给人一种多任务同时执行的错觉。

    1.4Java程序运行原理

    java命令会启动jvm,相当于启动了一个应用程序或者说是线程。该线程会自动启动主线程。然后主线程调用某个类的main方法。

    (一个应用程序只能有一个主线程。主线程不可以new,子线程可以new)

    1.5JVM启动是多线程吗?

    JVM是多线程,因为JVM的启动至少启动了主线程和垃圾回收线程

    mian方法在主线程(路径)上执行。

    finalize()在子线程(垃圾回收线程)上执行。

    
    
    1 class A{
    2 //
    3 //
    4 
    5 
    6 
    7 //
    8 }
    Test
    
    
    
    package p01;
    
    public class Demo01 {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            System.out.println("aaa");
            System.out.println("bbbb");
            System.out.println("ccc");
            //打印线程名称
            System.out.println(Thread.currentThread());
            for(int i = 0 ;i < 2; i++){
                new Student();
                System.gc();    //启动垃圾回收
                //调用这个方法的时候,会启用该类中的finalize()方法。
                
            }
        }
    
    }
    
    class Student{
        
        /*
         * 被垃圾级器回收的时候调用一次,对象从内存中释放的时候,调用一次 
         * 被回收和被释放都会调用。
         */
    
        @Override
        protected void finalize() throws Throwable {
            System.out.println("学生对象被回收了...");
            //打印线程名称
            System.out.println(Thread.currentThread());
        }
        
    }
  • 相关阅读:
    Struts2基于XML配置方式实现对action的所有方法进行输入校验
    Lucene对index操作
    Lucene自定义同义词分词器
    Lucene自定义排序
    使用CGlib实现AOP功能
    实战才是王道:工厂模式、三层架构、反射、多数据库问题
    一图看懂mybatis执行过程
    java synchronized 关键字原理
    Centos7 Redis3.0 集群搭建备忘
    关于泛型接口的探讨
  • 原文地址:https://www.cnblogs.com/juna3066/p/10434523.html
Copyright © 2011-2022 走看看