`
sgl124764903
  • 浏览: 173840 次
  • 性别: Icon_minigender_1
  • 来自: 邯郸
社区版块
存档分类
最新评论

线程同步加锁问题

    博客分类:
  • J2SE
阅读更多
public class TT implements Runnable {

	int b=100;
	public synchronized void m1() throws InterruptedException{
		System.out.println("m1开始执行");
		b=1000;
		Thread.sleep(5000);
		System.out.println("m1:"+b);
	}
	public synchronized void m2() throws InterruptedException{
		
		System.out.println("m2开始执行");
		Thread.sleep(2500);
		b=2000;
		System.out.println("m2:"+b);
	}
	public void run()  {
		System.out.println("run开始执行");
		try {
			m1();
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) throws InterruptedException {
		TT tt=new TT();
		Thread t=new Thread(tt);
		t.start();
		
		//Thread.sleep(1);
		tt.m2();
		
		System.out.println("main:"+tt.b);
	}

}

 m2开始执行
run开始执行
m2:2000
main:2000
m1开始执行
m1:1000

public class TT implements Runnable {

	int b=100;
	public synchronized void m1() throws InterruptedException{
		System.out.println("m1开始执行");
		b=1000;
		Thread.sleep(5000);
		System.out.println("m1:"+b);
	}
	public  void m2() throws InterruptedException{
		
		System.out.println("m2开始执行");
		Thread.sleep(2500);
		b=2000;
		System.out.println("m2:"+b);
	}
	public void run()  {
		System.out.println("run开始执行");
		try {
			m1();
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) throws InterruptedException {
		TT tt=new TT();
		Thread t=new Thread(tt);
		t.start();
		
		//Thread.sleep(1);
		tt.m2();
		
		System.out.println("main:"+tt.b);
	}

}

 m2开始执行
run开始执行
m1开始执行
m2:2000
main:2000
m1:2000

分享到:
评论

相关推荐

    windowsC++多线程加锁信号量共享内存

    然而,多线程编程也带来了一些挑战,如数据竞争和死锁问题,这些问题需要通过同步机制来解决。在这个场景下,"windowsC++多线程加锁信号量共享内存"就是我们要探讨的核心主题。 首先,让我们了解什么是多线程。多...

    Qt两种方法实现多线程并安全结束线程及QMutex加锁Qt单例化实现

    本主题将详细探讨如何使用Qt的QThread类来创建和管理线程,并且安全地结束线程,同时结合QMutex进行线程同步,以及如何实现Qt的单例模式。 1. **QThread的使用**: - **创建线程**: 在Qt中,创建线程通常是通过...

    c++线程加锁

    C++线程加锁机制提供了一种方式来防止多个线程同时访问临界资源,从而避免数据竞争和不一致的问题。在给定的描述中,我们看到通过Windows API中的临界区(CRITICAL_SECTION)来实现线程锁。 临界区是一种同步原语,它...

    C#代码_线程同步线程同步线程同步线程同步线程同步线程同步

    在C#中,线程同步可以通过多种机制来实现,其中包括信号量(Semaphore)和加锁机制。本文将深入探讨这些知识点,并通过一个名为`Semaphore_Demo`的代码示例进行说明。 一、线程同步的重要性 在多线程环境下,当多个...

    多线程文件加锁自动定时查询mysql统计数据

    在多线程环境下,需要注意线程同步和互斥问题,以防止数据竞争和不一致。 2. **文件加锁**: 文件加锁是一种机制,用于在多线程或多进程环境中保护共享资源,防止同时修改同一文件引发的数据冲突。在Unix/Linux...

    Linux系统编程之线程同步

    线程同步,指一个线程发出某一功能调用时,在没有得到结果之前,该调用不返回。同时其它线程为保证数据一致性,不能调用该功能。 举例1: 银行存款 5000。柜台,折:取3000;提款机,卡:取 3000。剩余:2000 举例2...

    售票窗口模拟线程同步

    在多线程环境中,线程同步是一项关键的技术,用于确保多个线程访问共享资源时的正确性和一致性,避免资源竞争和数据不一致等问题。本文将通过一个具体的案例——售票窗口模拟——来深入探讨线程同步的原理和实现。 ...

    iOS线程同步方案

    然而,多线程同时也带来了线程安全的问题,这就需要我们掌握线程同步方案来确保数据的一致性和完整性。本文将深入探讨iOS中的线程同步策略,包括互斥锁、自旋锁和递归锁。 1. **互斥锁(Mutex)**: 互斥锁是一种...

    加锁实现线程同步代码...

    使用加锁机制实现线程同步,从自己项目中摘取下来的。很适合初学者学习,代码编译的时候需要加 -lpthread

    C#实现多线程同步并发操作

    本文将深入探讨如何在C#中实现多线程同步并发操作,这不仅对于提高软件性能至关重要,也是高级程序员必须掌握的核心技能之一。 ### C#中的多线程同步并发操作 多线程编程可以极大地提高CPU的利用率,特别是在处理I...

    freelockqueue(多线程不需要加锁的队列性能很高)

    为了解决这个问题,"freelockqueue"应运而生,它提供了一种无需加锁的多线程队列实现,从而显著提升了程序的运行效率。 无锁队列的核心思想是利用原子操作(如Interlocked类提供的操作)以及硬件级别的内存模型来...

    java 多线程同步方法的实例

    在Java编程语言中,多线程同步是一种控制多个线程并发执行的重要机制,它确保了共享资源的安全访问,防止数据不...在实际开发中,要特别注意死锁、活锁和饥饿等问题,避免因线程同步不当而导致的性能下降或程序错误。

    重大软院操作系统实验三:线程同步

    6. **哲学家就餐问题**:这是一个经典的线程同步问题,用来说明死锁的可能性。在实验中,你可以通过实现这个例子来理解线程同步的重要性,并学习如何避免死锁。 在"操作系统实验三"中,你可能需要编写代码来模拟...

    多线程的同步问题(1)

    ### 多线程同步问题详解 #### 一、引言 在现代软件开发中,多线程编程技术因其能够显著提升程序性能而受到广泛重视。然而,随着线程数量的增加,如何确保线程间正确地共享数据成为了一个挑战。其中,线程同步问题...

    NET面试题-多线程编程与线程同步1

    【描述】:本篇文章主要探讨.NET框架下的多线程编程与线程同步相关的面试问题,包括线程与进程的区别、GUI线程访问控件限制、后台线程与前台线程、锁的使用以及线程同步的不同策略。 【标签】:“软件/插件”、...

    java synchronize 线程同步

    Java中的`synchronized`关键字是用于实现线程同步的关键机制,主要目的是解决多线程环境下的数据安全问题。当多个线程访问共享资源时,如果没有适当的同步控制,可能会导致数据不一致或者竞态条件等问题。线程同步...

    深入分析C# 线程同步

    在C#编程中,线程同步是一个至关重要的概念,特别是在多线程环境下,它用于管理和控制对共享资源的访问,防止数据竞争和错误的发生。本文将深入探讨C#中的线程同步技术及其应用。 首先,当多个线程可能同时访问共享...

    Python 多线程不加锁分块读取文件的方法

    需要注意的是,这种方法适用于读取操作,而对于涉及写操作的情况,则可能需要考虑其他同步机制以避免数据竞争问题。 希望本文能为您的Python多线程编程实践提供有价值的参考。如果您有任何疑问或建议,请随时留言...

    python多线程同步之文件读写控制

    为了修复这个问题,我们需要引入线程同步机制。在2.2部分,我们可以看到通过使用`threading.Lock()`对象实现了文件读写的加锁。在`lock_test()`函数中,我们创建了一个线程锁,并在读写文件之前获取锁,在完成操作后...

Global site tag (gtag.js) - Google Analytics