zoukankan      html  css  js  c++  java
  • 线程学习

    在学习线程的时候这张图特别重要

    进程与线程的区别

     1. 一个应用程序生成一个进程, 但一个进程可以产生多个线程

    2. 进程间通信非常麻烦, 但线程非常方便

    3. 进程独享资源, 线程共享它所属性进程的资源

    4. 进程结束,则这个进程所产生的线程也会销毁

    5 进程的资源都是由操作系统控制的

    下面来解释各种方法的功能和特性:

    1 start():标志着线程开始运行

    2 sleep():来自Thread 类 ,会让程序进入睡眠状态,在一定时间后自动运行,不会释放锁当时且需要捕获异常,是静态方法

    3 wait():来自Object类,,会让程序进入等待状态,只有通过notiy()或notifAllj()方法才能将它唤醒,会释放锁且不需要捕获异常

    4 join():在一个线程中调用另一个线程的join(),则当前线程阻塞,让另一个线程先执行后,当前才执行. 

    4 yield():

    yield与sleep的区别:
    1. sleep给其它线程运行的机会,但不考虑其它线程的优先级;但yield只会让位给相同或更高优先级的线程;
    2. sleep有异常, yield没有
    3. 当线程执行了sleep方法后,将转到阻塞状态,而执行了yield方法之后,则转到就绪状态;

    死锁:是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁

    死锁产生的四个条件
    (1) 互斥条件:一个资源每次只能被一个进程使用。
    (2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
    (3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
    (4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
     

    小总结:

    在新线程中操作主线程一定要用异步操作

    pw.println()这个操作只会把数据放在缓存中

    所以必须flush()

  • 相关阅读:
    数据分页和使用存储过程的数据分页
    【转】让你10分钟搞定Mac--最简单快速的虚拟安装
    使开发更便捷——Visual Studio 使用技巧——快捷键
    【基础知识】.Net基础加强 第二天
    【基础知识】.Net基础加强第01天
    【基础知识】Asp.Net基础三
    C# 文件操作 之 删除、复制、转移多个文件[转]
    C#中拷贝指定文件夹下的所有文件夹目录到指定文件夹中的方法
    巧用DateTime会使你处理这些事来变轻松多了
    Style.BasedOn 属性
  • 原文地址:https://www.cnblogs.com/yaobolove/p/4939041.html
Copyright © 2011-2022 走看看