`

回望Java中的多线程并发(一)

阅读更多

并发其实并不等于多线程,可以理解为多线程是实现并发的一种方式,因为实际情况中并发并不一定就是一定依赖于多线程,然而在Java中我们说到并发基本上就与多线程拉不开关系,所以我把标题置成“java中的多线程并发”。

 

在编码过程中,多线程这个东西也许你很少用,也许你偶尔用,也许你经常用,然而实际工作中对于每一个coder来说多线程都是存在于我们的环境中的,比如运行J2EE应用的的中间件、我们的集成开发环境、SWT类库等,在一个coder的周围或者说在计算机周围它都无处不在,如影随形。

 

然而多线程也许是一把利器,当你运用得当会所向披靡,运用不当也会走火入魔。

 

多线程能帮助我们干什么?

首先,硬件越来越强大,能更充分的利用多核处理器让我们的程序跑得更快使很多后台的操作可以并行运行,让用户能及时打到希望的效果,比如我们在IDE界面中做很多操作时在IDE后台都要做很多操作,举个实例你在Eclipse中写了一行代码,然后ctl+s,至少很直白的看到了,这行代码被保存到了对应的硬盘文件中,同时对这行代码做了编译工作并检测编译释放通过。在用户的眼里瞬间就完成了你想要达到的效果,如果你做一个操作对应后台有很多需要处理的逻辑只在一条工作线上运行,那么你得到的回馈就会相应的延后。


 

其次,为了设计更合理,在很多应用中为了完成一些调度,或者是实现一些服务,而这些调度和服务在实际情况中也是并行运行的,跟主线程没有必然的联系(但是他始终是为主线程服务的,有一定的关系,所以是相对的不是绝对的),我们根据实际设计需要希望这调度是并行的。比如:在iteye的编辑器里写博客时你会注意到右上角有一个草稿保存提示功能。



 

另外就是实际业务需要也需要运用到并发,尤其是游戏中使用并发是提高效率和达到实际效果的主要技术,如在游戏中的地图加载更新、色彩渲染、动作渲染等在使用并发的技术上使交互性更好。

 

多线程的机制是什么?

将我们的程序划分成多个分离的、独立运行的任务,这些独立的任务就对应一个线程,这些任务的调度将由执行线程来驱动,他们共同存在于一个进程中,在这个进程中,他们并发执行任务,给我们感觉就是每个线程好像拥有了一个CPU一样,其底层是切分CPU时间,根据调度轮流切换不同线程并分配给他对应的占用时间,只不过他们的切换和时间的等待是我们感觉不到的,我们能感觉到的关心的只是是否完成了我们想要干的事情,其底层的实际调度对于我们来说是透明的。

 

Java中的如何创建一个线程?

第一种:实现Runnable接口,重写run()方法

第二种:继承Thread类,重写run()方法,实质上Thread类也是实现了Runnable接口

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics