《java编程思想》读书笔记——第一章1.9多线程(多线程概念、共享资源概念、线程锁概念)

1.9多线程

编程时常常会有这样的需求——对多个任务同时加以控制
在原理上来说,程序通常需要暂停当前的行为,然后去做另外一件事,再回到原本的程序运行上
这种中断在某些特殊的需求下显得相对高效,但是大多数情况下,我们希望这些“另一些事”是在自己专有且独立的“程序片段”中运行的,在这种模式下,整个程序将会以更快的速度响应请求
在一个程序中,这种专有且独立的“程序片段” 就叫做线程,利用他们进行编程就叫做多线程处理,比如说,在登录界面按下登录按钮后,主程序不需要等待验证程序验证完毕在做出响应,而是启动验证程序的线程后,立刻执行登录的响应
在服务器能够支持多个cpu的情况下,线程之间能够做到真正的并行处理,程序员在调度时只需要启用多线程,若是多个CPU就会自动进入并行处理以提高效率,若不是则是使用并发处理(即使并发处理只是一个CPU在多个进程中以高速切换运行以达成同时运行的效果,这仍然可以提高碎片时间的使用效率,以及提高交互体验)

但是与其相对的这将带来一个新的问题——共享资源,当有多个CPU的线程需要访问同一个数据时,这将会导致所谓的脏数据——cpu1已经对数据做了修改,而cpu2并不知道
Java将线程这一概念内建在程序中,在对象这一级提供支持——一个执行线程可以用一个对象表示
通过使用synchronize关键字可以达到这种效果,被修饰的内存区域,线程在访问时,需要先获取它的锁权限,若另一个线程想要操作它时,必须等待其他线程执行完,之后才可以获得他的锁权限再对数据进行操作

发布了21 篇原创文章 · 获赞 0 · 访问量 475

猜你喜欢

转载自blog.csdn.net/qq_41445205/article/details/104168988