线程相关

这本书第二第三章讲的都是线程同步的东西:第二章将synchnizend,lock,wait,notify等等,第三章讲的是线程同步辅助类:clickbarraer,countdownlatch。phaser。exchangger类。


1. 线程执行器:注意是什么?平时我们都是把runable放入thread 里面。

缺点是:每一个runable都要有一个thread;创建太多的thread,也就是说创建太多的线程,系统负载过重。

所以用线程执行器:这个就不用创建每一个thread了,只需要new出runable,然后放置到执行器里面执行。有三种方案

2.ThreadPoolExecutors类,他的对象就是线程执行器。提供的四个构造器或者使用executors工厂类来创建Threadpoolexecutor对象。这个类有一个特性,就是你需要显式的去终止它。什么意思,就是说,如果没有任务放到执行器里面,执行企业会继续执行,不会结束。


四个构造器是那四个:

A:第一个是来一个任务就起一个线程,空闲了会回收无用的。

B:第二个是创建一个固定的线程个数,请根据具体资源能力来定。

C:第三个是只创建一个线程的执行器,就是说只有一个线程。保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。示例代码如下:

D:第四种就是下面的周期的。一个是未来定期执行;一个是重复执行。


ThreadPoolExecutors类的对象调用invokeany()方法。执行一个list。list里面放很多callable,将返回第一个正确执行,并且没有抛出异常的结果。

ThreadPoolExecutors类的对象调用invokeall()方法。执行一个list。list里面放很多callable,将返回所有的线程执行,list《future《String》》 封装起来。


执行器种延迟执行任务:ScheduledThreadPoolExecutor类。定时执行,如果执行器调用shutdown方法,默认情况是会执行完里面所有的任务才会停止。可以通过一个方法来改。

循环周期的执行用ScheduledExecutorService类


在执行器种取消任务,可以在Future接口来取消任务。Future 《String 》  result.cancel(true)来取消。如果任务执行完了,那么取消不了。如果正在执行,那么看参数,参数如果是true,那么任务取消。停止执行,如果参数是false,那么不会停止执行。如果任务没有执行,那么任务就取消了。不会执行了。


在执行器中被拒绝的任务:获取这个任务怎么获取。当调用shutdown();后,正常情况是等所有任务都执行完后执行器再关闭。如果在调用shutdown()和执行器停止之间的这段时间,程序又往里放了一个任务。他会拒绝这个任务的。那么怎么获取到它拒绝的任务呢?有个rejectedexecutionhandler接口。可以 获取。你需要实现这个接口。如果你没有实现,那么会抛出运行时异常,程序会停止。因为是运行时异常,因此不需要用try/catch来捕获。
同步的意思:同步的意思就是协调线程之间的工作次序。
互斥:就是说资源的互斥访问。


Fork /  Join 框架,合并分解框架。
1.jdk1.5用的是线程执行器。  1.7引入了Fork /  Join框架。
2。在一个任务中,一个任务。如果这个任务的工作量比较大。分解成两个小的,两个小的还比较大,再分解成四个小的任务。
ForkJoinPool类。类似线程执行器。
然后RecursiveAction类,RecursiveTask类这两个类继承了ForkJoinTask基类。(相当于就是实现runable),继承这两个之一即可。然后放入ForkJoinPool里面去执行就好了。

说一下阻塞与非阻塞的区别:就是看等不等,如果立即返回不需要等,非阻塞。如果停在那里等待,阻塞。

第六章:并发集合    都是线程安全的。
1.阻塞式的并发集合:阻塞的意思是当这个集合满的时候,或者为空的时候,如果往里面塞东西,或者取东西,那么线程将会阻塞在那里。一直到这个方法可以执行的时候。
2.非阻塞式的集合:当方法不能执行的时候,返回null或者抛异常,但是这个线程不会被阻塞。

所以说,阻塞与非阻塞是相对于访问他们的线程来说的。  

生成并发随机数:ThreadLocalRandom类。每一个线程都有一个随机数生成器。都是伪随机数的。这个比Random类有什么好处呢?一人一份。性能好。

jdk1.5中的原子变量:就是说单个变量上的原子操作。 原子操作:就是CAS,compare  and  set  什么意思?在修改之前记录变量的值,然后在本地修改,什么是本地修改,就是在一个副本上修改,然后替换之前检查一下值是不是没有变化,如果没有变化,那么可以执行替换操作。。这就是原子操作。
这样不就保证了。在修改的时候,只有一个线程在修改。不会紊乱。注意这个过程并没有加锁,或者其他的同步机制。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是嵌入式线程相关的基础知识点: 1. 线程线程是一组在同一进程中运行的执行流。在嵌入式系统中,线程可以轮流使用CPU时间片,从而实现并发处理。 2. 进程:进程是程序的执行实例。每个进程都有自己的地址空间、堆栈和全局变量,以及独立的系统资源,如文件描述符、信号处理器等。 3. 上下文切换:上下文切换是指操作系统从一个线程或进程切换到另一个线程或进程时,需要保存当前线程或进程的上下文,并恢复下一个线程或进程的上下文。 4. 互斥锁:互斥锁是一种用于保护共享资源的机制。当一个线程获得互斥锁时,其他线程将被阻塞,直到该线程释放锁。 5. 信号量:信号量是一种用于协调多个线程或进程之间的同步和通信的机制。它可以用来控制对共享资源的访问,也可以用于线程或进程之间的通信。 6. 任务:在嵌入式系统中,任务是指一种特殊的线程,它在系统启动时就开始运行,并一直运行到系统关闭。任务通常用于执行周期性任务,如数据采集、数据处理等。 7. 中断:中断是一种异步事件,它会打断当前线程或进程的执行,转而执行中断处理程序。在嵌入式系统中,中断通常用于处理硬件事件,如定时器、外部中断等。 8. 定时器:定时器是一种硬件设备,它可以在一定时间间隔内产生中断。在嵌入式系统中,定时器通常用于周期性任务的触发和时间戳的生成。 9. 状态机:状态机是一种模型,用于描述系统的行为。状态机由一组状态和转移条件组成,当系统的输入或内部状态发生变化时,状态机会根据当前状态和输入条件转移到下一个状态。 10. RTOS:RTOS是实时操作系统的缩写,它是一种专门用于嵌入式系统的操作系统。RTOS提供了丰富的线程管理和通信机制,以及实时调度和中断处理等功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值