美文网首页
Java多线程编程实战指南

Java多线程编程实战指南

作者: 奉先 | 来源:发表于2018-05-31 15:48 被阅读17次

    作者:黄文海[中国] 读书日期:20180531 ~

    1.基础知识:

    1.1线程的概念和创建

    进程(Process)是指程序运行实例,是程序向操作系统申请资源(内存空间、文件句柄)的最小单位。
    线程(Thread)是进程的可执行的最小单位,一个进程可以包含一个或者多个线程,同个进程中的线程共享进程中的资源。
    任务是指线程所要完成的计算。
    创建线程有2种方法,对应Thread类的2个构造方法:

    public Thread()
    public Thread(Runnable target)
    
    1. 创建Thread类或者其子类的一个实例。
    2. 创建一个实现Runnable接口的实例,并将该实例作为Thread的构造方法的参数。
      下面时用两种方法创建线程的一个例子:
    public class ThreadBasic {
        //直接继承Thread或者其子类。
        class ThreadWelcome extends Thread{
            @Override
            public void run() {
                System.out.println("2. Welcome . I'm " + Thread.currentThread().getName());
            }
        }
        //定义一个实现了Runnable接口的类,再将该类作为Thread构造方法的参数来创建线程。
        class ThreadWelcome1 implements Runnable{
            @Override
            public void run() {
                System.out.println("3. Welcome . I'm " + Thread.currentThread().getName());
            }
            
        }
        public static void main(String[] args) {
            ThreadBasic tb = new ThreadBasic();
            Thread tw = tb.new ThreadWelcome();
            
            ThreadWelcome1 tw1 = tb.new ThreadWelcome1();
            Thread tw2 = new Thread(tw1);
            
            tw.start();
            tw2.start();
            System.out.println("1. Welcome . I'm " + Thread.currentThread().getName());
        }
    }
    

    run()方法是java虚拟机来调用的,不需要在程序中写代码调用Thread.run()方法,否则会出错。线程包含4个主要属性,分别是编号(id);名称(Name);线程类别(true表示守护进程,false表示用户进程);优先级(Priority)。守护进程不会影响Java虚拟机的正常停止,而虚拟机会等待所有用户进程结束后,才正常结束。Thread的常用方法包括:run(),start(),join(),yield(),sleep(),currentThread()。

    假设线程A所执行的代码创建了线程B,那么,习惯上称线程B为线程A的子线程。Java无法通过API获得一个线程的父线程。

    1.2线程的生命周期

    1.3多线程下载实例

    下面是一个通过多线程实现下载功能的一个程序。

    相关文章

      网友评论

          本文标题:Java多线程编程实战指南

          本文链接:https://www.haomeiwen.com/subject/tgiqsftx.html