首先明确同步的概念,同步可以让线程之间进行互斥访问,并且可以让线程间进行可靠的通讯。
Synchronized可以保证在同一时刻,只有一个线程可以执行某一个方法,或者某一个代码块。很多人会理解为同步的概念是一个互斥的方式,但是这个不是同步的全部意义。同步不仅可以阻止线程看到对象处于不一致的状态中,还可以保证进入同步方法或者同步代码块的每一个线程,都看到由同一个锁保护的之前所有的修改效果。
在这里重点理解下可以让线程进行可靠的通讯,还是用一个列子来说明。现在有三个线程,A输出1,B输出2,C输出3.那么多线程的情况下,按照多线程的原理,输出的是随机的,我们无法知道输出的下一个是什么1,2,3?那么,我们现在要编写一个程序,让3个线程按照顺序不断输出 1 2 3 1 2 3…….这就要求三个线程进程可靠的通讯。
public int code;
public ThreadTest(int code){
this.code = code;
}
private static int TYPE = 1;
private static synchronized void changeType(){
if(TYPE==3){
TYPE=1;
}else{
TYPE = TYPE+1;
}
}
private static synchronized int getType(){
return TYPE;
}
public static void main(String[] args) {
ThreadTest t1 = new ThreadTest(1);
ThreadTest t2 = new ThreadTest(2);
ThreadTest t3 = new ThreadTest(3);
t1.start();
t2.start();
t3.start();
}
@Override
public void run() {
while(true){
if(this.code==getType()){
System.out.println(this.code);
changeType();
}
}
}
写方法和读方法都需要被同步,只同步写方法还不够。读和写方法都被同步了,同步才会起作用。
分享到:
相关推荐
在Java编程中,多线程查询数据库是一种常见的优化策略,特别是在处理大数据量或者需要并行执行多个查询时。本文将详细探讨如何利用Java的多线程技术和线程池来实现并发查询数据库,以及相关的文件`BatchDataUtil....
在IT行业中,多线程是程序设计中的一个重要概念,特别是在C#编程中。"大漠多线程模板"是一个专门针对C#开发的多线程处理框架,它为开发者提供了便捷的方式来管理和优化多线程应用。这个框架由知名开发者"大漠"创建,...
在编程领域,多线程是一种常见的技术,它允许程序同时执行多个任务,从而提高系统效率和响应速度。尤其是在处理大量数据、并发操作或者需要进行IO等待时,多线程显得尤为重要。C#作为.NET框架的一部分,提供了丰富的...
2. **共享资源**:在多线程环境中,多个线程可能需要访问同一个数据或对象,这就形成了共享资源。 3. **竞态条件**:当两个或多个线程同时访问并修改共享资源时,如果没有适当的同步措施,可能导致数据的不一致性,...
多线程是指一个程序内可以同时执行多个独立的执行流,每个执行流被称为一个线程。在易语言中,我们可以通过创建线程对象来实现多线程。线程间可以并行或交替执行,提高了程序的响应速度和资源利用率。在处理大量数据...
多线程编程的目的,就是"最大限度地利用CPU资源",当某一线程的处理不需要占用CPU而只和I/O等资源打交道时,让需要占用CPU资源的其它线程有机会获得CPU资源。从根本上 说,这就是多线程编程的最终目的。 单线程...
在IT领域,多线程编程是一项关键技能,尤其是在性能优化和并发处理方面。本文将深入探讨多线程编程的基础知识,以帮助初学者快速入门。 首先,我们需要理解什么是多线程。多线程是指在一个进程中同时执行多个独立的...
在IT行业中,多线程是一种常见的编程技术,它允许程序同时执行多个独立的任务,从而提高计算机系统的效率和响应性。特别是在自动化工具如“按键精灵”中,多线程的应用能够显著提升其性能和实用性。 标题“多线程_...
1. PowerBuilder 9.0的多线程实现:PB9不直接支持多线程,但可以通过第三方控件或自定义编程实现。 2. Ttimer.ocx控件:这是一个可能用于多线程环境的ActiveX定时器控件,可以触发并发操作。 3. 多线程的优势:多...
《狂神说多线程详解》是一份深入探讨多线程技术的资源包,其中包含了对多线程编程的详尽解析。多线程是现代计算机编程中的一个重要概念,尤其在处理高性能计算、并发操作以及实时系统时,多线程技术显得尤为重要。它...
1. **任务调度**:通过多线程,每个线程可以绑定一个定时器,执行不同周期或间隔的任务。例如,一个线程负责定期检查网络连接,另一个线程负责定期备份数据。 2. **并行处理**:多个定时器可以在不同的线程中并发...
在Delphi编程环境中,多线程技术是一种提升应用程序性能的重要手段。它允许程序同时执行多个独立的任务,从而更好地利用现代计算机的多核处理器资源。在本`delphi 多线程调试demo`中,我们将探讨如何在Delphi 2007中...
在编程领域,多线程是一种重要的并发执行机制,它允许程序同时执行多个任务,从而提高系统资源利用率和程序响应速度。E语言(可能是错误输入或者是某个特定编程环境或语言的简称)中的多线程功能也不例外。本文将...
"鱼刺多线程模块"是一个专为提升程序运行效率而设计的开源组件,它主要聚焦于多线程技术的应用。在计算机科学中,多线程是并发执行多个任务或子任务的一种方法,使得程序能够更高效地利用系统资源,特别是在多核...
"鱼刺多线程注册源码例子"是一个基于"鱼刺多线程稳定框架"的编程实践,旨在展示如何在软件开发中有效地利用多线程技术来提高程序的执行效率和稳定性。在这个例子中,"鱼刺框架"可能是一个专门为多线程编程设计的开源...
在多线程环境中,事件处理通常在引发事件的线程上运行,因此,如果一个线程修改了UI控件的状态,而另一个线程尝试处理相关事件,可能会导致线程不安全。使用适当的同步机制可以解决这个问题。 "资源管理器"可能涉及...
在易语言中,多线程技术是一项重要的特性,它允许程序同时执行多个任务,提高了程序的执行效率。本主题将深入探讨如何使用易语言实现多线程访问网页的功能。 在多线程访问网页的场景中,通常涉及到以下几个关键知识...
此外,"大漠多线程"是一个常见的易语言多线程库,它提供了丰富的多线程操作接口,包括线程同步、互斥量、信号量等高级功能。结合"511遇见"这个标签,可能意味着这个框架是在易语言社区交流中广泛讨论和分享的成果,...
1. **线程安全**:确保共享数据在多线程环境下正确访问,通常需要使用锁(如Monitor或Mutex)、信号量(Semaphore)或原子操作来实现。 2. **线程间通信**:线程间的同步和通信至关重要,可以使用事件(Event)、...
多线程允许一个应用程序同时执行多个任务,每个任务都在一个独立的线程上运行。C#中,我们可以通过System.Threading命名空间下的类来创建和管理线程。主线程是应用程序启动时默认创建的,而额外的线程可以由开发者...