package com.yan.test;
public class TestRunnableTicket implements Runnable {
int i = 100;
public void run() {
while (true) {
synchronized (this) {
if (i > 0) {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + "(- -)" + i--);
} else {
break;
}
}
}
}
public static void main(String args[]) throws InterruptedException {
TestRunnableTicket ru = new TestRunnableTicket();
Thread t = new Thread(ru);
Thread t1 = new Thread(ru);
Thread t2 = new Thread(ru);
t.start();
t1.start();
t2.start();
}
}
运行结果
Thread-0(- -)100
Thread-2(- -)99
Thread-1(- -)98
Thread-0(- -)97
Thread-2(- -)96
Thread-1(- -)95
Thread-0(- -)94
Thread-2(- -)93
Thread-1(- -)92
Thread-0(- -)91
Thread-2(- -)90
Thread-1(- -)89
Thread-0(- -)88
Thread-2(- -)87
Thread-1(- -)86
Thread-0(- -)85
Thread-2(- -)84
Thread-1(- -)83
Thread-0(- -)82
Thread-2(- -)81
Thread-1(- -)80
Thread-0(- -)79
Thread-2(- -)78
Thread-1(- -)77
Thread-0(- -)76
Thread-2(- -)75
Thread-1(- -)74
Thread-0(- -)73
Thread-2(- -)72
Thread-1(- -)71
Thread-0(- -)70
Thread-2(- -)69
Thread-1(- -)68
Thread-0(- -)67
Thread-2(- -)66
Thread-1(- -)65
Thread-0(- -)64
Thread-2(- -)63
Thread-1(- -)62
Thread-0(- -)61
Thread-2(- -)60
Thread-1(- -)59
Thread-0(- -)58
Thread-2(- -)57
Thread-1(- -)56
Thread-0(- -)55
Thread-2(- -)54
Thread-1(- -)53
Thread-0(- -)52
Thread-2(- -)51
Thread-1(- -)50
Thread-0(- -)49
Thread-2(- -)48
Thread-1(- -)47
Thread-0(- -)46
Thread-2(- -)45
Thread-1(- -)44
Thread-0(- -)43
Thread-2(- -)42
Thread-1(- -)41
Thread-0(- -)40
Thread-2(- -)39
Thread-1(- -)38
Thread-0(- -)37
Thread-2(- -)36
Thread-1(- -)35
Thread-0(- -)34
Thread-2(- -)33
Thread-1(- -)32
Thread-0(- -)31
Thread-2(- -)30
Thread-1(- -)29
Thread-0(- -)28
Thread-2(- -)27
Thread-1(- -)26
Thread-0(- -)25
Thread-2(- -)24
Thread-1(- -)23
Thread-0(- -)22
Thread-2(- -)21
Thread-1(- -)20
Thread-0(- -)19
Thread-2(- -)18
Thread-1(- -)17
Thread-0(- -)16
Thread-2(- -)15
Thread-1(- -)14
Thread-0(- -)13
Thread-2(- -)12
Thread-1(- -)11
Thread-0(- -)10
Thread-2(- -)9
Thread-1(- -)8
Thread-0(- -)7
Thread-2(- -)6
Thread-1(- -)5
Thread-0(- -)4
Thread-2(- -)3
Thread-1(- -)2
Thread-0(- -)1
分享到:
相关推荐
Java多线程模型的缺陷还包括:Java多线程模型中,线程之间的相互等待和占有资源可能会导致死锁问题,影响系统的并发执行程度和处理速度。 为解决Java多线程模型的缺陷,需要对其进行改进。改进策略包括:使用线程...
### Java同步线程模型分析与改进 #### 一、引言 随着软件系统变得越来越复杂,多线程编程成为提高程序性能和响应性的关键手段之一。Java作为一种广泛使用的编程语言,自诞生以来就内置了对多线程的支持。然而,...
在多线程编程领域,Java作为一门广泛使用的编程语言,其内置的多线程模型一直是学习和应用的重点。本文将深入探讨Java多线程模型的相关知识点,包括线程与进程的区别、线程的实现原理、线程的创建方法以及线程的阻塞...
《JAVA多线程教学演示系统》是一篇深入探讨JAVA多线程编程的论文,它针对教育领域中的教学需求,提供了一种生动、直观的演示方式,帮助学生更好地理解和掌握多线程技术。这篇论文的核心内容可能包括以下几个方面: ...
单线程模型简化了程序设计,降低了程序复杂度,使得开发者可以更专注于业务逻辑的实现,而无需过多考虑多线程间的同步问题。 单线程的优势主要体现在以下几个方面: 1. **简化程序设计**:由于无需处理多线程间的...
通过对Java同步线程模型和多进程模式的对比分析,我们发现Java同步线程模型能够发挥更大的优越性,两者的差异性主要体现在以下几个方面:对进程而言,其两个单位之间是相互分开的,而对线程而言,其每个执行单元具有...
为了在多线程中同步进度更新,我们可以利用synchronized关键字、wait()、notify()方法,或者使用Java并发库中的高级工具,如Semaphore、CyclicBarrier或CountDownLatch等。 一个简单的进度条实现可以采用共享变量...
Java同步线程模型分析与改进 本文讨论了Java同步线程模型的缺陷和改进方法。Java是一种支持多线程编程的语言,但是在实际应用中,Java的线程模型存在一些缺陷,例如同步问题。目前,普遍采用急救包(Band-Aid)类库...
本案例将深入探讨Java多线程中的关键知识点,包括线程同步、线程通信和线程阻塞。 线程同步是为了防止多个线程同时访问共享资源,导致数据不一致。Java提供了多种同步机制,如synchronized关键字、Lock接口...
Java中的多线程编程则基于这种操作系统级别的并发模型。 Java虚拟机(JVM)为每一个Java应用程序启动一个进程,而在这个进程中,所有的代码执行都是通过线程来完成的。默认情况下,Java程序的main方法在一个称为...
在Java编程中,多线程并发是...总之,Java的多线程并发实例可以帮助我们更好地理解和实践线程控制、同步机制以及经典的设计模式,提升我们的编程能力。通过不断学习和实践,我们可以编写出高效、安全的多线程并发程序。
在多线程环境下,可能会出现数据竞争问题,为了解决这个问题,Java提供了多种同步机制,如synchronized关键字、wait/notify机制、Lock锁(ReentrantLock)等。synchronized用于控制对共享资源的访问,而wait/notify...
Java是一种广泛使用的编程语言,尤其在开发图形用户界面(GUI)和处理多线程应用程序时。在这个场景中,我们讨论的是如何使用Java来构建一个模拟车票购买的GUI,并利用多线程技术来提高程序的响应性和用户体验。下面...
本文将深入探讨Java多线程中的关键知识点,包括创建线程、主线程、线程优先级、线程组、线程同步以及线程间的通信。 1. **创建线程** 在Java中,可以通过两种方式创建线程:继承`Thread`类或实现`Runnable`接口。...
Java自定义线程模型在软件开发中扮演着重要的角色,特别是在高性能、高并发的应用场景,如游戏服务器。本文将深入探讨如何在Java中构建自定义线程模型,并分享一些实践经验。 首先,我们要明白为什么要自定义线程...
Java多线程设计模式是Java开发中的核心概念,它涉及到如何高效、安全地在多个执行线程之间共享资源和协调任务。设计模式是解决特定问题的成熟方案,它们是编程经验的结晶,可以帮助开发者在面临多线程挑战时快速找到...
书中详细介绍了Java多线程的核心概念,如线程的创建、启动、同步、协作以及生命周期管理。读者将学习如何通过实现Runnable接口或继承Thread类来创建线程,以及如何使用Executor框架来管理线程池。 此外,书中还深入...
Java Socket 多线程是网络编程中的一个重要概念,它结合了Java的并发处理能力和Socket通信技术,使得服务器能够同时处理多个客户端的连接请求。在Java中,Socket是用于在网络环境中进行双向通信的类,而多线程则允许...
《Java多线程编程实战指南-核心篇》是一本深入探讨Java并发编程的书籍,旨在帮助读者掌握在Java环境中创建、管理和同步线程的核心技术。Java的多线程能力是其强大之处,使得开发者能够在同一时间执行多个任务,提高...