35 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | ||
| title: Multithreading
 | ||
| localeTitle: 多线程
 | ||
| ---
 | ||
| ## 多线程
 | ||
| 
 | ||
| 多线程是一个同时执行多个进程的过程。 Java使用主线程启动程序,并且只要有任何用户创建它,就会在主线程上添加更多线程。主线程是任何Java程序中的第一个用户线程。此外,JVM确保在程序结束之前关闭所有用户线程。
 | ||
| 
 | ||
| 线程既有优点也有缺点。
 | ||
| 
 | ||
| ## 好处:
 | ||
| 
 | ||
| *   独立于其他线程运行代码。
 | ||
| *   创建模块化设计。
 | ||
| 
 | ||
| ## 缺点:
 | ||
| 
 | ||
| 如果线程未正确同步,则会出现竞争条件和死锁。
 | ||
| 
 | ||
| 线程可以进一步分为两类:
 | ||
| 
 | ||
| *   用户线程
 | ||
| *   守护线程
 | ||
| 
 | ||
| 可以通过两种方式创建线程:
 | ||
| 
 | ||
| 1.  实现Runnable接口: Runnable接口中只有一个方法,即public void run()。实现此方法将确保每当此线程启动时,run()内的代码执行。
 | ||
|     
 | ||
| 2.  扩展线程类。 这个类还包含public void run(),为了运行我们自己的代码,我们需要覆盖它们。使用此方法的缺点是我们在Thread中有一个超类,并且不能扩展我们可能想要的任何其他类。
 | ||
|     
 | ||
| 
 | ||
| 两者的代码可以在这里找到:http://ide.geeksforgeeks.org/k7GjcA。
 | ||
| 
 | ||
| 您会注意到,如果多次运行此代码,结果可能会有所不同。这是由运行它的操作系统决定的。操作系统可以从可运行状态中选择任何线程并运行它。我们没有控制权。如果有多个线程处于可运行状态(准备运行),则可以挑选任何人。它甚至不依赖于优先权。
 | ||
| 
 | ||
| 更多详情:https://www.ntu.edu.sg/home/ehchua/programming/java/J5e\_multithreading.html |