java的线程安全
线程安全是多线程编程时一个非常重要的概念。一般而言,一个类或者程序所提供的接口对于线程来说是原子操作或者多个线程之间的切换不会导致该接口的执行结果存在二义性,我们认为这个类或者程序是线程安全的。在拥有共享资源的多线程并行执行的程序中,线程安全是通过同步机制保证各个线程都可以正常且正确的执行,不会出现数据污染的情况。在java多线程编程中,针对线程安全我们需要考虑任务的并行和并发,资源共享,是否产生竞态,程序的原子性,可见性,有序性等。 1.串行、并行和并发 串行和并行指的是任务的执行方式。串行是指多个任务时,各个任务按顺序执行,完成一个之后才能进行下一个;并行指的是多个任务可以同时执行。如下图:我们先洗衣服,洗完衣服之后再做饭,做完饭之后再烧水,按照顺序一件一件的执行就是串行,当我们同时打开洗衣机洗衣服,打开蒸饭锅做饭和烧水,三件事同时执行则是并行。 并发和并行是即相似又有区别的两个概念,并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔内发生。在多道程序环境下,并发性是指在一段时间内宏观上有多个程序在同时运行,但在单处理机系统中,每...