/**
多线程--静态同步函数用的是哪一种锁呢?
通过验证 发现不再是this 因为静态方法中也不可以定义this
静态近内存时 内存中没有本类对象 但是一定有该类对应的自己码文件对象
类名.class 该对象的类型是Class
静态的同步方法 使用的是该方法所在类的自己码文件对象 类名.class
*/
class Ticket implements Runnable
{
private static int ticketNum = 100;
boolean flag = true;
public void run(){
if(flag){
while(true){
synchronized(Ticket.class){
if(ticketNum>0){
try{
Thread.sleep(10);
}catch(Exception e){
}
System.out.println(Thread.currentThread().getName()+"code:..." + ticketNum--);
}
}
}
}else{
while(true){
show();
}
}
}
public static synchronized void show(){
if(ticketNum>0){
try{
Thread.sleep(10);
}catch(Exception e){
}
System.out.println(Thread.currentThread().getName()+"show:..." + ticketNum--);
}
}
}
class StaticMathodDemo
{
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();
}
}
分享到:
相关推荐
### Java多线程知识点总结及企业真题解析 #### 一、知识点总结 ##### (1)多线程相关概念 1. **程序、进程和线程的区分**: - **程序**:为了完成特定的任务而编写的指令集合。它是静态的概念。 - **进程**:...
《多线程实例源码11.rar--win32线程同步5大方案例程》是一个专注于Windows操作系统下的多线程编程的资源包,其中包含了五个不同的线程同步方案的实例代码。线程同步是多线程编程中的关键概念,确保了在并发执行的...
在多线程环境中,如果在静态构造函数中使用锁,可能会导致死锁或性能下降。原因在于,静态构造函数已经隐含了线程安全性,添加锁可能会与.NET运行时的内部同步机制冲突,增加不必要的复杂性。此外,由于静态构造函数...
2. **使用线程私有数据**:线程私有数据(Thread Private Data, TPD)是一种为每个线程提供独立数据副本的方法。通过这种方式,可以确保每个线程都有自己的数据副本,从而避免了数据共享引起的竞争条件。 3. **使用...
在Windows API中,CEVENT对象是一种同步对象,用于线程间的通信和同步。通过`CreateEvent`函数创建,可设置为手动重置或自动重置事件。手动重置事件在被一个线程释放后,必须由其他线程显式重置,否则会一直保持有...
在本教程中,我们将探讨“互斥锁”这一机制,它是实现线程同步的一种常见方法。互斥锁在STM32微控制器上使用RT-thread实时操作系统时尤为重要。 首先,我们要理解什么是互斥锁。互斥锁,英文名为Mutex,是一种同步...
本主题将深入探讨多线程的使用以及线程锁的两种主要实现方式: synchronized关键字和ReentrantLock。 一、多线程基础 1. 线程创建: - 继承Thread类:创建一个新的类,该类继承自Thread类,并重写run()方法。然后...
在Linux操作系统中,多线程是一种程序执行方式,它允许多个执行流同时在单个进程中运行。这种并发执行能够提高资源利用率,特别是在处理器核心数增多的情况下,多线程可以充分利用硬件资源,提升程序性能。本篇笔记...
临界区作为一种简单有效的同步机制,被广泛应用于各种多线程编程场景。理解并掌握临界区的使用,对于编写高效、可靠的多线程程序至关重要。在实际项目中,我们应根据需求选择合适的同步工具,如临界区、信号量、事件...
本话题将深入探讨如何在Android中使用JNI进行多线程编程,并实现native方法对Java函数的回调。 1. **JNI基础知识**: - JNI是Java平台的一部分,为Java应用程序提供了与本地代码交互的能力。开发者可以通过JNI在...
- **线程同步**:QMutex是一种互斥锁,用于保护共享资源不被多个线程同时访问。在访问关键区域(可能引发竞争条件的部分)之前,应调用`lock()`,访问结束后调用`unlock()`。 - **加锁技巧**:确保每次`unlock()`...
为了防止这种情况,我们需要一种机制来同步线程,确保同一时间只有一个线程可以访问该变量。 Qt提供了一个名为QMutex的类,它是一个互斥锁,用于实现线程同步。互斥锁的基本原理是,当一个线程获得锁后,其他试图...
在Windows平台上,Visual C++(简称VC)是微软公司提供的一种强大的C++开发工具,它支持多线程编程,使得开发者能够创建同时执行多个任务的应用程序。多线程编程是现代软件开发中的一个重要概念,特别是在处理大数据...
在深入探讨POSIX多线程编程的细节之前,我们首先需要理解什么是线程以及为何要在Linux环境下使用pthread库进行多线程编程。 ### 一、何为线程?为何使用线程? 线程是操作系统能够进行运算调度的最小单位,它是...
嵌入式Linux多线程编程是嵌入式系统开发中的一种重要技术,能够提高系统的效率和响应速度。本章节将详细介绍嵌入式Linux多线程编程的基本概念、线程的创建、同步和互斥、线程属性、多线程实验等方面的知识点。 1. ...
易语言多线程支持库2.1是一款专为易语言设计的库文件,它提供了在易语言编程环境中实现多线程功能的能力。多线程是现代计算机程序设计中一个重要的概念,它允许程序同时执行多个任务,提高了程序的运行效率和响应性...