`
wststar
  • 浏览: 17831 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

多线程--同步函数用的是哪一种锁呢?

 
阅读更多

/**

多线程--同步函数用的是哪一种锁呢?

函数需要被对象调用 那么函数都有一个所属对象引用 就是this

所以同步函数使用的锁是this


通过该程序进行验证


使用两个线程进行验证

一个线程在同步代码块中

一个线程在同步函数中

都在执行买票动作

*/


class Ticket implements Runnable

{

private int ticketNum = 100;

boolean flag = true;


public void run(){

if(flag){

while(true){

synchronized(this){

if(ticketNum>0){

try{

Thread.sleep(10);

}catch(Exception e){

}

System.out.println(Thread.currentThread().getName()+"code:..." + ticketNum--);

}

}

}

}else{

while(true){

show();

}

}

}


public synchronized void show(){

if(ticketNum>0){

try{

Thread.sleep(10);

}catch(Exception e){

}

System.out.println(Thread.currentThread().getName()+"show:..." + ticketNum--);

}

}


}


class  ThisLocakDemo

{

public static void main(String[] args) 

{


Ticket t = new Ticket();


Thread t1 = new Thread(t);//创建了一个线程

Thread t2 = new Thread(t);//创建了一个线程

t1.start();

try{

Thread.sleep(10);

}catch(Exception e){


}

t.flag = false;

t2.start();


}

}


分享到:
评论

相关推荐

    vc++ multithread多线程教程---线程通信--利用事件对象,线程同步--使用信号量,线程同步--使用互斥量,线程同步--使用临界区

    在VC++编程环境中,多线程技术是一种提升程序性能的重要手段。它允许程序同时执行多个任务,从而提高CPU利用率和程序响应速度。然而,多线程编程也带来了数据同步和线程通信的问题,以防止数据冲突和竞态条件。本...

    vc++中的线程锁(线程锁保持线程同步)

    在提供的文件列表中,如`RWLock.cpp`,可能涉及到了读写锁(Read-Write Lock),这是一种更为复杂的线程同步机制,允许多个线程同时进行读操作,但只允许一个线程进行写操作,从而提高了并发性能。 `Thread.cpp`和`...

    大文件MD5多线程 - 副本.zip_多线程更新_文件夹同步

    MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,能够生成一个固定长度的摘要,用于验证数据的完整性和一致性。在文件更新过程中,通过比较新旧文件的MD5值,可以快速判断文件是否已经改变,无需完全...

    3种多线程实现同步方法

    本篇文章将深入探讨三种在C++中实现多线程同步的方法:事件对象、关键代码段和互斥对象。 首先,我们来看**事件对象**。事件对象是一种信号机制,用于线程间通信和同步。在Windows API中,CreateEvent函数创建一个...

    多线程同步演示(采用CreateThread()和WaitForMultipleObjects()函数)

    以下是对这两个函数及其在多线程同步演示中的应用的详细解释。 首先,`CreateThread()`函数用于创建一个新的线程来执行指定的函数,即线程的入口点。该函数接收一系列参数,包括线程函数指针、初始线程堆栈大小、...

    操作系统-创建多线程-读者写者

    读者写者问题是另一种常见的多线程同步问题。这个问题描述了一个场景:多个线程试图读取共享资源,同时可能有一个或多个线程试图修改这个资源。为了保证数据的一致性,需要确保当有写操作正在进行时,其他所有读和写...

    Java多线程-多线程知识点总结和企业真题

    ### Java多线程知识点总结及企业真题解析 #### 一、知识点总结 ##### (1)多线程相关概念 1. **程序、进程和线程的区分**: - **程序**:为了完成特定的任务而编写的指令集合。它是静态的概念。 - **进程**:...

    PB 回调函数,多线程

    3. **线程安全**:为了保证回调函数在多线程环境下的正确执行,我们需要考虑线程间的同步,比如使用互斥锁(mutex)、条件变量(condition variable)等同步原语,防止数据竞争。 4. **异步通信**:PB的回调机制...

    Java多线程机制(讲述java里面与多线程有关的函数)

    另一种创建线程的方法是实现Runnable接口,创建一个实现了Runnable接口的类,然后在Thread构造函数中传入该类的实例。线程启动后,会调用Runnable接口的run()方法。 9.4 线程的常用方法: - `start()`: 使线程从...

    多线程临界段同步演示1

    在计算机编程领域,多线程是一种让程序同时执行多个任务的技术,从而提高系统资源的利用率和程序的响应速度。然而,多线程编程也带来了一些挑战,其中之一就是如何确保线程安全,即在多线程环境下正确地共享数据。...

    解决多线程编程中的同步互斥问题

    在Windows平台下,解决多线程同步互斥问题的一种常用方法是使用关键段(Critical Section)。关键段是一种轻量级的同步对象,用于保护共享资源免受并发访问的影响。一旦一个线程获得了对某个关键段的所有权,其他...

    多线程函数指针数组.rar

    而在多线程编程中,函数指针是一种常见的机制,可以用来传递执行特定任务的函数,从而实现线程的动态调度或异步操作。 函数指针本质上是一个指向函数的指针变量,可以像操作普通数据一样操作它,包括赋值、传递和...

    VC++多线程同步基本示例

    本示例着重讲解了VC++中的多线程同步,这是多线程编程中确保数据安全和正确性的重要概念。我们将深入探讨临界区、互斥量、事件和信号量这四种多线程同步机制。 1. **临界区(Critical Section)**:临界区是多线程...

    Python应用实战:python多线程-多线程安全问题&lock与rlock.zip

    在Python编程中,多线程是一种常见的并发执行方式,它允许多个任务同时运行,以提高程序的效率。然而,多线程环境下也存在一系列安全问题,这些问题主要源自资源竞争和数据同步。本篇文章将深入探讨Python中的多线程...

    多线程数据同步

    标题"多线程数据同步"直指这一核心问题,而描述则具体提到了使用临界区对象作为解决方案之一。 线程同步是为了防止多个线程同时访问共享资源,导致数据的混乱。在Windows操作系统中,临界区对象是一种轻量级的同步...

    Python-python多线程函数库vthread简而强大

    Python是一种广泛使用的编程语言,尤其在处理数据科学、网络编程和自动化任务方面表现突出。在多线程编程中,Python的内置`threading`库提供了基础的线程管理功能,但有时开发者可能需要更简洁、高效的解决方案。...

    NT下未公开的多线程读,单线程写的函数

    在多线程编程中,读写锁(Read-Write Locks,简称R/W Locks)是一种常见的同步机制,它允许多个线程同时读取一个共享资源,但只允许一个线程写入。这样可以提高系统的并行性,因为读操作通常是无冲突的。在Windows ...

    linux上实现多进程和多线程实现同步互斥(源代码)

    在Linux操作系统中,多进程和多线程是两种并发执行的方式,它们在处理并发问题时,经常需要进行同步和互斥操作,以确保数据的一致性和程序的正确性。本篇将详细介绍这两种并发模型以及如何在Linux环境中实现同步互斥...

    vc多线程-mfc-大家可以看看

    在IT行业中,多线程是一种常见的编程技术,特别是在Windows环境下,Visual C++(简称VC)提供了强大的MFC(Microsoft Foundation Classes)库来支持多线程编程。MFC为开发者提供了便利的API,使得在C++中创建和管理...

    大恒-双相机开发-C#-多线程-项目开源

    此外,他们还专门设计了帧率计算和时间计算方法,这些方法可能涉及到线程同步和互斥锁等技术,以确保数据的准确性和一致性。 帧率计算是衡量图像处理性能的关键指标。项目中,开发者不仅实现了采集帧率的计算,还...

Global site tag (gtag.js) - Google Analytics