zoukankan      html  css  js  c++  java
  • 《Java Concurrency》读书笔记,Java并发编程实践基础

    1. 基本概念

    程序,是一组有序的静态指令,是一种静态的概念。程序的封闭性是指程序一旦运行,其结果就只取决于程序本身;程序的再现性是指当机器在同一数据集上重复执行同一程序时,机器内部的动作系列完全相同,最后获得的结果也相同。

    进程,是一种活动,它是由一个动作系列组成,每个动作是在某个数据集上执行一段程序,整个活动结果是提供一处系统或用户功能。进程一般由三部分组成:程序、数据集合、进程控制块(PCB)。进程具有并发性和不确定性。

    线程,是一个进程内部的顺序控制流。线程本身不能独立运行,必须在进程中执行,使用进程的地址空间。一个进程内部包含多个顺序控制流,或者并发执行多种运算,就是多线程。

    创建进程的高消耗(每个进程都有独立的代码与数据空间),进程之间通信不方便(消息机制),进程切换的时间太长这些特性导致了多线程的提出。

    进程和程序的区别

    进程是程序的一次运行活动,属于一种动态的概念。

    一个进程可以执行一个或多个程序。

    程序可以作为一种软件资源长期保持着,而进程则是一次执行过程。

    2.创建多线程

    参考:

    Java:多线程,分别用Thread、Runnable、Callable实现线程,了解区别

    Java:多线程,线程池,用Executors静态工厂生成常用线程池

    Java:多线程,线程池,ThreadPoolExecutor详解

    3.线程的基本控制

    start()

    该方法启动线程。

    sleep()

    该方法暂停执行,可以以毫秒、纳秒指定睡眠时间,但并不保证这些睡眠时间的精确性。中断(interrupt)可以终止睡眠时间。

    suspend()

    resume()

    join()

    该方法让一个线程等待另一个线程的完成。如果t1、t2是两个Thread对象,在t1中调用t2.join(),会导致t1暂停执行,直到t2线程的终止。join的重载版允许指定等待的时间,同样,它是不精确的。

    interrupt()

    该方法中断线程的执行,一般由外部线程(或主线程)调用,自身或者通过try/catch捕获,或者通过循环捕获。

    @Override
    public void run() {
        ...
        try {
            Thread.sleep(10000);
        }catch(InterruptedException ex) {
            // handle with exception...
            return;  
        }
      ...
    }
    @Override
    public void run() {
        ...
        while(!Thread.interrupted) {
            // process...
        }
     ...  
         
    }    

    stop()

    强迫线程停止执行,已经不赞成使用。

  • 相关阅读:
    自动生成四则运算题目
    学习进度总结随笔
    作业1
    软件工程项目总结
    结对编程项目---四则运算
    作业三
    自动生成小学四则运算题目的程序
    学习进度总结
    大三下自我简介
    寒假社会实*报告
  • 原文地址:https://www.cnblogs.com/nayitian/p/3316154.html
Copyright © 2011-2022 走看看