![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
计算机结构
文章平均质量分 75
保存计算机结构相关的笔记
最后一只三脚兽
梦想大厂的大三仔
展开
-
线程池的介绍和代码实现
在线程池之前我们应该已经接触了一些"池",如字符串常量池等等,这些“池”的原理其实都差不多,都是为了提高效率提前开辟一块空间存储所需要的东西,需要用直接拿取即可,不需要另外创建,线程池也是一个道理。相比于进程的创建和销毁,线程的创建和销毁已经很快了,但是如果大量线程频繁创建和销毁,这样的开销依旧是很大的,所以我们可以提前创建好一个空间来提前创建好线程,我们直接给这些创建好的线程分配任务即可。但是为什么直接取线程就一定比创建线程来的快呢?原创 2022-09-23 16:41:14 · 229 阅读 · 0 评论 -
多线程定时器的原理与使用,带你从0到1写一个自己的定时器
在实现一个定时器之前我们得先构造出框架,首先我们需要一个MyTimer类作为定时器,在创建一个MyTask类作为任务类。在阻塞队列没有任务时我们必须一直循环,保证第一时间拿到任务,但是当阻塞队列有任务时,我们只要等待最早任务需要的时间即可,在这段时间内可以把CPU资源让出来,能实现这个操作的有wait和sleep。但是如果我们使用了sleep,如果在等待的时间内又有线程传递任务过来,我们就无法接收了,如果用wait其它线程可以用notify操作提前唤醒定时器,这才是我们需要的。原创 2022-09-23 15:26:57 · 210 阅读 · 0 评论 -
Java阻塞队列的原理和使用, 自己写一个阻塞队列
生产者消费者模型就是通过一个容器来解决生产者和消费者之间的耦合问题,通过阻塞队列,生产者和消费不再需要直接进行通信,而是借由阻塞队列完成信息传递。当生产者生产出数据时不必等待消费者相应,直接扔给阻塞队列即可,同时消费者需要获取数据时直接通过阻塞队列获取。阻塞队列是一种特殊的队列,它与普通队列一样遵循“先进先出”的原则。阻塞队列主要的应用场景实在“生产者消费者模型”中。不同的类对应着不同的实现阻塞队列的容器。原创 2022-09-22 17:33:24 · 243 阅读 · 0 评论 -
线程安全问题你了解多少?java中线程安全的基础防范
如上面所说,JVM为了优化速度,每个线程都有一个”工作内存“,t1线程开始时从主内存中获取数据存储在工作内存中,然后在工作内存上操作数据,这就导致了当我们在main线程修改数据后t1线程读取的数据仍然是工作内存中没有修改的数据,所以循环永远不会停止。可见两个操作过后num只加了一次,想要解决这个问题也只要让该操作是原子即可,表现为a在进行increase时b就在一边等着,使得操作变为线性操作,这样就解决了该问题,但与此同时就浪费了大量的时间,在工程中我们需要对锁操作进行平衡,以具体需求为准。原创 2022-09-20 15:47:19 · 203 阅读 · 2 评论 -
Thread常用方法和线程状态
但是注意:interrupt方法对正在运行中的线程和阻塞(sleep)的线程作用效果是不同的,如果是正在运行,则标志位会立马置为false,如果在阻塞状态,线程会抛出InterruptedException,处理方法由异常处理决定。**注意:**虽然创建Thread继承的对象调用start()方法和run()方法都能执行run()方法内部的函数块,但是如果只调用run方法无法创建一个新线程,只会在main线程中运行,运行完毕才会往下走。当我们需要线程走完以后再走下一步时,我们就需要使用join()方法。原创 2022-09-07 11:51:30 · 123 阅读 · 0 评论 -
线程基本概念和创建
线程产生的问题难以修复。线程的调度是由操作系统决定的,因此线程执行的顺序是不可预料的,这就给多线程程序的执行带来了太多的变数。所以如果代码产生了问题,由于顺序的不确定性,可能每次运行会产生不同的结果,甚至有可能有的时候运行结果是对的,有的时候会错,这就为调试增加了难度。我们知道多个线程公用同一份资源,同时运行,这就不可避免导致了多个线程同时操作同一份资源的情况,产生一系列如脏读、幻读、不可重复读等问题,为了解决这些问题就必须以效率为代价对线程的权限加以限制,即为线程“上锁“,具体方法会在下篇博客中阐述。原创 2022-09-06 12:00:00 · 109 阅读 · 0 评论 -
计算机怎样同时运行多个程序的?进程相关概念介绍
内存指针描述进程持有的内存资源。进程的记账信息是用来辅助进程进行调度的,虽然各进程之间有优先级,但是我们还是需要保证优先度较低的进程的运行的,如果一个进程运行时间太短就会给它再分配一些时间(注意,进程运行的时间并不是实际的时间,不是以秒等时间为单位,而是执行指令的条数)。PCB是进程控制块(process control block),一个进程内部需要包含很多信息,包括/进程的唯一标识 —— pid,进程关联的程序信息(例如哪个程序,加载到内存中的区域等),分配给该资源使用的各个资源,进度调度信息。...原创 2022-08-14 21:29:45 · 3357 阅读 · 0 评论 -
基本的计算机结构知识----基础向
CPU是计算机的核心设备, 它的作用是完成算数计算和逻辑判断, CPU的很多时候好坏决定了程序的运行效率。主频是CPU的一个重要概念,CPU主频为1.9GHZ的概念就指CPU一秒钟能够计算19亿次,其中G为10^9,而HZ指1秒钟的次数。CPU内部有寄存器作为存储设备,它能够少量存储数据以备CPU操作,其传输数据的速度相比于计算机的内存与外存要快得多,但因为其造价较高,所以存储的数据量比较少。...原创 2022-08-14 21:27:45 · 924 阅读 · 0 评论