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()

  • 相关阅读:
    【HDOJ】2267 How Many People Can Survive
    【HDOJ】2268 How To Use The Car
    【HDOJ】2266 How Many Equations Can You Find
    【POJ】2278 DNA Sequence
    【ZOJ】3430 Detect the Virus
    【HDOJ】2896 病毒侵袭
    求奇数的乘积
    平方和与立方和
    求数列的和
    水仙花数
  • 原文地址:https://www.cnblogs.com/yaobolove/p/4939041.html
Copyright © 2011-2022 走看看