zoukankan      html  css  js  c++  java
  • JAVA 并发(待补全!)

    从性能上看 如果没有任务会阻塞 那么在单处理器的机器人使用并发就没有任何意义 (需要上下文切换 时间反而长)

    进程是运行在他自己地址空间的自包容的程序

    协作多线程与抢占式多线程

     

    想要定义任务需要实现Runnable接口并编写run方法

    将任务转变为工作任务的方法是将它交给一个Thread构造器

    Thread t=new Thread(Runnable r);

    t.start();

    线程调度机制是非确定的 每次运行的结果可能都会不同

    或者继承Thread类(Thread类中的API都被声明为native方法 也就是不具备平台无关性)

    但是此时只能调用一次start方法调用多次会抛出异常  m1.start()   ;m1.start();

    也可以使用Executor

    LiftOff为实现了Runnable接口的类

    Runnable是执行工作的独立任务 但是它不返回任何值 如果希望任务完成时返回一个值,那么可以实现Callable接口 是从方法call中返回的值

    后台线程

    后台线程派生出的子线程都是后台线程

    两种实现方式的区别和联系:

    在程序开发中只要是多线程肯定永远以实现Runnable接口为主,因为实现Runnable接口相比继承Thread类有如下好处:

    • 避免点继承的局限,一个类可以继承多个接口。 
    • 适合于资源的共享   

    原子性 要么还未开始,要么执行结束,不存在中间的状态 read、load、assign、use、store、write具有原子性  以及synchronized块之间的操作

    可见性 除了可以用volatile保证还可以用synchronized和final保证

    volatile关键字:第一保证变量对所有线程的可见性,保证了新值能立即同步到主内存,以及每次使用前立即从主内存刷新;第二,禁止指令重排序列化,从而保证某些对变量的操作按顺序执行。

    有序性 由volatile和synchronized关键字保证

    线程的集中状态之间的转换

     线程安全的容器 也并非绝对的安全

    才能这种东西 本来就是靠自己挖掘创造的 我也不是什么天才 我只是比任何人都拼命工作 一步一个脚印走过来了 等我回头一看 背后没有一个身影 那帮懒惰的人在山脚念叨着 谁叫那家伙是天才 开什么玩笑 我最讨厌悠哉悠哉长大的慢性子 比我有时间 有精力 感情丰富的人 为什么比我懒惰 那就给我啊 要把这些东西都浪费掉的话 就通通给我 我还有很多很多想创造的东西 给我啊--------摘自《legal high II》 与诸君共勉
  • 相关阅读:
    WebGPU学习(九):学习“fractalCube”示例
    WebGPU学习(八):学习“texturedCube”示例
    WebGPU学习(七):学习“twoCubes”和“instancedCube”示例
    WebGPU学习(六):学习“rotatingCube”示例
    WebGPU学习(五): 现代图形API技术要点和WebGPU支持情况调研
    WebGPU学习(四):Alpha To Coverage
    WebGPU学习(三):MSAA
    WebGPU学习(二): 学习“绘制一个三角形”示例
    WebGPU学习(一): 开篇
    无论你正从事的是什么行业,读书,都应当是一辈子的事
  • 原文地址:https://www.cnblogs.com/luyu1993/p/5728079.html
Copyright © 2011-2022 走看看