美文网首页
编程第五周的日常<二>

编程第五周的日常<二>

作者: 一条有科研精神的程序狗 | 来源:发表于2017-01-03 21:05 被阅读0次

多线程

定义:简单的说,当程序同时完成多见事情时,就是所谓的多线程程序。(基于并发的思想)

1 进程和线程

进程 -process- 进程是操作系统分配内存的基本单位
线程 -thread- 最小的执行单元 [操作系统分配CPU资源的基本单位]
一个进程通常包含了一个主线程或多个线程

2 Java中创建线程的三种方式

(1) 继承Thread类并重写run()方法
(2) 实现Runnable接口并重写run()方法,在这中可以使用Lambda表达式。- 推荐使用
(3) 实现一个Callable接口并重写Call()方法

3 线程使用中的注意事项

(1) 启动线程需要调用start()方法,start()方法调用被覆盖的run()方法,如果不调用strat()方法,线程永远都不会启动。
(2) 三种实现了Runnable接口的线程的启动方式:
<1> new Thread(实现了Runnable接口的对象).start;
<2> 匿名内部类
new Thread(new Runnable(){
@Override
}).start;
<3> Lambda表达式
new Thread(() ->{
--写方法
}).start;

4 线程的基本状态以及状态之间的关系

5 Synchronized的两种用法

<1> 放在方法前面只允许抢占到对象锁的线程进入执行
<2> 构造一个同步代码块只允许抢占到对象锁的线程进入执行
<3>注意:没有抢占到对象锁的线程在系统自动维护的等待池中等待;如果抢占到锁的线程释放了对象锁,那么这些等锁的线程就会自动抢锁;谁抢占到了锁,谁就进入同步代码块中执行,没有抢到锁的继续等待;基于Synchronized的锁机制是可重入的锁机制。
<4> 锁主要是为了锁住资源,不让多个线程同时抢占一个资源,防止出错。

线程池

<1> 是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。
<2> 装潢模式的应用 - 将线程不安全的容器包装成线程安全的容器。 如果可以的话,尽可能的不使用隐式锁机制(synchronized关键字)或是显式(explicit)Lock接口的锁机制因为他们会把并行的(并发)的程序变成串行执行的程序,这样会让程序的性能受到严重的影响。 一种常见的解决方案是为每个线程创建资源的副本,每个资源操作自己的副本,而不是同步操作同一个副本。 这又是典型的使用空间换时间的策略。

相关文章

  • 编程第五周的日常<二>

    多线程 定义:简单的说,当程序同时完成多见事情时,就是所谓的多线程程序。(基于并发的思想) 1 进程和线程 进程 ...

  • 编程第五周的日常<一>

    引入泛型的折半查找 I/O流 定义:流是一种抽象概念,它代表了数据的无结构化传递。按照流的方式进行输入输出,数据被...

  • 编程第三周的日常<二>

    接口与多态 接口 一种特殊的类,是一种抽象类的延伸。 接口之间允许继承而且允许多重继承---一个接口可以继承多个接...

  • js面向对象

    js面向对象(第五周) 什么是面向对象 面向对象是一种编程思想,是在面向过程编程(结构化编程)之后出现的,面向对象...

  • 13周跑步计划

    第五周第二课 打卡成功✌️

  • 编程第五天的日常

    条件语句 if 条件语句 用于告诉程序在某个条件成立的情况下,执行某段语句,而在另一种情况下执行另外的语句。具体包...

  • 编程第六周的日常

    网络通信 局域网与因特网 服务器是指提供信息的计算机程序,客户机是指请求信息的计算机或程序。局域网 广域网 网...

  • 公开日记1240:

    2021.10.5 星期二 雨 1日常 今天是第五天了,假期的第五天,而我也在...

  • 周五 2021-04-09 23:30 - 06:45 多云 0

    一 时间记录 二 概述 早上醒来日常任务,玩手机,下床,思考人生,写宣言,编程规划,洗漱,吃饭上午总结计划,日常任...

  • 沉思录 --- 结对编程(Pair Programming) 篇

    背景今年,我开始了使用敏捷软件交付工程实践的第五个年头,在编程知识满足工作需求之余,我开始重新审视这些融入日常的工...

网友评论

      本文标题:编程第五周的日常<二>

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