Java 多线程浅析

随着电脑硬件技术的不断提高,充分利用资源显得日益重要。以前在一个流水线上的生产线,现在完全有能力分拆成多个流水线,最终进行组合实现。

对于普通的多线程开发,一般就是继承Thread或者实现Runnable接口,其实Thread本身就是实现Runnable接口的。在高级一点就是整个多线程的框架Executors,它自有线程池的管理,同时和普通的Thread相比,它增加了Callable接口的传入,能够实现多线程的返回值,通过Future得到结果。继续展开就有像ScheduledExecutorServiceCompletionExecutorService之类的特殊功能的服务类。

以上就是多线程的几种创建方式,创建完成之后,线程之间如何配合协调呢?就几个简单的方法:joinsleepinterrupt。真正多线程系统在高并发的环境下会出什么问题呢?最大的问题就是数据同步了,如何保证数据一致性。

这个时候sychronized就展现它的威力了,对象锁机制能够保证多线程在高并发的情形下,保持代码执行的原子性,有效保障了数据的准确性。用了sychronized之后,如何实现线程之间的通信呢?waitnotifyAll能够很好的实现。

多线程开发中需要注意死锁问题,一种是两个线程互相join,另外一种就是sychronized两个线程互相等对方的锁释放。

因为多线程中的变量是线程不安全的,所以可以通过ThreadLocal来实现对每个线程的单独变量副本。最后对于那些守护线程来讲,主要设计都是负责为主线程服务的,如果所有非守护线程都已经结束了,那JVM也就退出了。

猜你喜欢

转载自plant12345.iteye.com/blog/2246419
今日推荐