java线程——什么是线程?

来源:互联网 发布:福建广电网络电视客服 编辑:程序博客网 时间:2024/05/16 12:48

【0】README

0.1) 本文描述转自 core java volume 1, 源代码为原创,旨在理解 java线程——什么是线程? 的相关知识;
0.2)线程定义:一个程序可以执行多个任务,每一个任务成为线程;
0.3)进程和线程的区别: 本质的区别是, 每个进程拥有自己的一整套变量,而线程则共享数据;


【1】 什么是线程?

1.1)使用线程给其他任务提供机会

  • 1.1.1)下面是在一个单独的线程中执行一个任务的简单过程:
  • step1)将任务代码移到实现了 Runnable接口的类的run方法中:
public interface Runnable{    void run();}class MyRunnable implements Runnable
  • step2)创建一个类对象:
Runnable r = new MyRunnable();
  • step3)由 Runnable创建一个 Thread对象:(创建一个新线程)
Thread t = new Thread(r);
  • step4)启动线程:
t.start();

Warning)

  • W1) 不要调用 Thread类或 Runnable对象的run方法。 直接调用run方法, 只会执行同一个线程的任务, 而不会启动新线程;
  • W2)应该调用 Thread.start 方法, 这个方法将创建一个执行run方法的 新线程;
  • source code: https://github.com/pacosonTang/core-java-volume/blob/master/chapter14/ThreadTest.java)
    这里写图片描述
    这里写图片描述

1.2)看个荔枝:

  • 1.2.1)多线程共享一个变量
    这里写图片描述

  • Conclusion)实现Runnable接口比继承Thread类所具有的优势: (干货)

    • C1):适合多个相同的程序代码的线程去处理同一个资源;
    • C2):可以避免java中的单继承的限制;
    • C3):增加程序的健壮性,代码可以被多个线程共享,代码和数据独立;

Warning)

  • W1) main方法其实也是一个线程。在java中所有的线程都是同时启动的,至于什么时候,哪个先执行,完全看谁先得到CPU的资源;
  • W2)在java中,每次程序运行至少启动2个线程。一个是main线程,一个是垃圾收集线程。因为每当使用java命令执行一个类的时候,实际上都会启动一个JVM,每一个jVM 实际就是在操作系统中启动了一个进程;

1.3)判断线程是否启动(主线程也有可能在子线程结束之前结束。并且子线程不受影响,不会因为主线程的结束而结束)
这里写图片描述

0 0
原创粉丝点击