线程的基本概念

作者 : icbug 发布时间: 2020-06-7 文章热度:103 共1971个字,阅读需5分钟。 本文内容有更新 手机浏览

目 录

线程的基本概念

什么是线程

进程:你的硬盘中有一个QQ程序,这个程序是静态的概念,它仍在硬盘上没有人理他,但你双击它,他就会运行,弹出一个账号和密码输入框,登录进去,那么这个时候它就是一个进程。进程对于应用程序来说是一个动态的概念

线程:作为进程中最小的一个执行单元,就是线程,简单来说不同的应用程序执行路径就叫做一个线程

线程实例
package cn.icbugblog.juc.c_000;
import java.util.concurrent.TimeUnit;
public class T01_WHATISTHREAD{
    private static class T1 extends Thread{
        @Override
        public void run(){
            for(init i=0; i<10;i++){
                try{
                    TimeUnit.MICROSECONDS.sleep(1);
                }catch (InterruptedException e){
                    e.printStackTrace();
                }
                System.out.println("T1")
            }
        }

    }


public static void main (String[] args){
    //new T1().run();
    new T1().start();
    for(int i=0;i<10;i++){
        try{
            TimeUnit.MICROSECONDS.sleep(1);
        }catch (InterruptedException e){
            e.printStackTrace();
        }
        Systemctl.out.println("main")
    }
}

}

运行并观察上面的程序你会发现字符串T1Main交替的输出,这个就是我们程序中有两条不同的执行路径再交叉执行,这个就是我们直观上的线程,这个概念·不需要大家背下来,只需要大家理解即可,加深记忆。

如何创建线程
package cn.icbugblog.juc.c_000;

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorsService;
import java.util.concurrent.Executors;
import java.util.concurrent.FuyureTask;

public class T02_HOWTOCREATEThread{
    static class MyThread extends Thread{
        @Override
        public void run(){
            System.out.println("Hello MyThread!");
        }
    }
    static class MyRun implements Runnable{
        @Override
        public void run(){
            System.out.println("Hello MyRun!");
        }
    }
    static class MyCall implements Callable<string>{
        @Override
        public String call(){
            System.out.println("Hello MyCall");
            return "success";
        }
    }
    //启动线程方式(五种)
    public static void main(String[] args){
        new MyThread().start();
        new Thread(new MyRun()),start();
        new Thread (()->{
            System.out.println("Hello Lambda!");
        }).start();
        Thread t = new Thread(new FutureTask<String>(new Mycall()));
        t.start();
        ExecutorService service = Excutors.newCachedThreadPool();
        service.execute(()->{
            System.out.println("Hello ThreadPool");
        });
        service.shutdown();
    }
}

给大家分享一道面试题

请告诉我启动线程的三种方式?

有哪3种呢?我们下期揭晓


下一篇预告:线程方法的认识

The passage by https://icbugblog.cn

常见问题FAQ

本站资源是否全部免费?
本站文章和普通速度下载资源免费,高速下载资源和讲解视频需要成为SVIP才能查看哦!
本站采用标准 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明!
icbug创客 » 线程的基本概念

发表评论

CAPTCHAis initialing...