黑马程序员_并发编程笔记_初学简单概念

------- android培训java培训、期待与您交流! ----------

1、多线程较单线程在效率上的优势:

1)在单核多线程的情况下:

如果将同一任务放到单线程中运行。当遇到阻塞方法时,将会出现整个任务阻塞的情况。

如果将任务拆分成多个子任务放到多线程中运行。当某一线程遇到阻塞时,不会对其它线程的运行产生直接影响。

2)在多核多线程的情况下:

不仅在以上提到的场景有优势。

而且,如果将同一任务放到单线程中运行。那么在同一时间,只会有一个处理器在处理任务。其它处理器将处于闲置状态。资源浪费。

如果将任务拆分成多个子任务放到多线程中运行。那处理器的多个核,将会对各个子任务进行并行处理。

其优势,就体现在可拆分的任务上;或者多任务上。


2、线程的安全性

在不充分同步的情况下,线程的运行先后顺序是不可控的。

比如:

public class UnThreadSafe {
	private int value;
	public int getValue(){
		return value++;
	}
}

看起来getValue方法中只有一行代码。其实它依然是线程不安全的。因为:value++在动作上,分为:取出value值、将value值加1、再存回value值,三个动作。在执行任何一个动作的时候,CPU使用权,都有可能被其它线程抢占。

所以,应该加上同步关键字:

public class UnThreadSafe {
	private int value;
	public synchronized int getValue(){
		return value++;
	}
}

-------  android培训 java培训 、期待与您交流! ----------

你可能感兴趣的:(黑马程序员基础学习,JAVA,SE)