public class Test {
public static void main(String[] args) {
Runnable runnable = new Runnable() {
public void run() {
synchronized(this){
for (int i = 0; i < 10; i++) {
System.out.print(Thread.currentThread().getName()+"**"+i+"**");
}
System.out.println();
}
}
};
Runnable runnable1 = new Runnable() {
@Override
public void run() {
System.out.println("run ...");
}
};
for (int i = 0; i < 10; i++) {
new Thread(runnable).start();
}
}
}
输出如下
Thread-0**0**Thread-0**1**Thread-0**2**Thread-0**3**Thread-0**4**Thread-0**5**Thread-0**6**Thread-0**7**Thread-0**8**Thread-0**9**
Thread-3**0**Thread-3**1**Thread-3**2**Thread-3**3**Thread-3**4**Thread-3**5**Thread-3**6**Thread-3**7**Thread-3**8**Thread-3**9**
Thread-2**0**Thread-2**1**Thread-2**2**Thread-2**3**Thread-2**4**Thread-2**5**Thread-2**6**Thread-2**7**Thread-2**8**Thread-2**9**
Thread-1**0**Thread-1**1**Thread-1**2**Thread-1**3**Thread-1**4**Thread-1**5**Thread-1**6**Thread-1**7**Thread-1**8**Thread-1**9**
Thread-9**0**Thread-9**1**Thread-9**2**Thread-9**3**Thread-9**4**Thread-9**5**Thread-9**6**Thread-9**7**Thread-9**8**Thread-9**9**
Thread-8**0**Thread-8**1**Thread-8**2**Thread-8**3**Thread-8**4**Thread-8**5**Thread-8**6**Thread-8**7**Thread-8**8**Thread-8**9**
Thread-7**0**Thread-7**1**Thread-7**2**Thread-7**3**Thread-7**4**Thread-7**5**Thread-7**6**Thread-7**7**Thread-7**8**Thread-7**9**
Thread-6**0**Thread-6**1**Thread-6**2**Thread-6**3**Thread-6**4**Thread-6**5**Thread-6**6**Thread-6**7**Thread-6**8**Thread-6**9**
Thread-4**0**Thread-4**1**Thread-4**2**Thread-4**3**Thread-4**4**Thread-4**5**Thread-4**6**Thread-4**7**Thread-4**8**Thread-4**9**
Thread-5**0**Thread-5**1**Thread-5**2**Thread-5**3**Thread-5**4**Thread-5**5**Thread-5**6**Thread-5**7**Thread-5**8**Thread-5**9**
非线程安全
public class Test {
public static void main(String[] args) {
Runnable runnable = new Runnable() {
public void run() {
for (int i = 0; i < 10; i++) {
System.out.print(Thread.currentThread().getName()+"**"+i+"**");
}
System.out.println();
}
};
Runnable runnable1 = new Runnable() {
@Override
public void run() {
System.out.println("run ...");
}
};
for (int i = 0; i < 10; i++) {
new Thread(runnable).start();
}
}
}
输出如下:
Thread-0**0**Thread-2**0**Thread-1**0**Thread-3**0**Thread-2**1**Thread-2**2**Thread-2**3**Thread-2**4**Thread-2**5**Thread-2**6**Thread-0**1**Thread-2**7**Thread-4**0**Thread-3**1**Thread-1**1**Thread-1**2**Thread-1**3**Thread-6**0**Thread-3**2**Thread-5**0**Thread-4**1**Thread-2**8**Thread-0**2**Thread-9**0**Thread-2**9**
Thread-4**2**Thread-5**1**Thread-3**3**Thread-3**4**Thread-3**5**Thread-3**6**Thread-3**7**Thread-3**8**Thread-8**0**Thread-8**1**Thread-6**1**Thread-6**2**Thread-6**3**Thread-6**4**Thread-1**4**Thread-6**5**Thread-8**2**Thread-8**3**Thread-8**4**Thread-8**5**Thread-8**6**Thread-3**9**
Thread-5**2**Thread-4**3**Thread-4**4**Thread-9**1**Thread-9**2**Thread-9**3**Thread-9**4**Thread-9**5**Thread-7**0**Thread-0**3**Thread-7**1**Thread-9**6**Thread-9**7**Thread-4**5**Thread-5**3**Thread-8**7**Thread-6**6**Thread-1**5**Thread-6**7**Thread-8**8**Thread-8**9**
Thread-5**4**Thread-4**6**Thread-4**7**Thread-7**2**Thread-9**8**Thread-9**9**
Thread-0**4**Thread-0**5**Thread-0**6**Thread-7**3**Thread-7**4**Thread-4**8**Thread-4**9**
Thread-5**5**Thread-6**8**Thread-6**9**
Thread-1**6**Thread-5**6**Thread-5**7**Thread-7**5**Thread-7**6**Thread-7**7**Thread-7**8**Thread-7**9**
Thread-0**7**Thread-5**8**Thread-5**9**
Thread-1**7**Thread-0**8**Thread-1**8**Thread-1**9**
Thread-0**9**
分享到:
相关推荐
Java 多线程例子 Java 多线程是 Java 编程语言中的一种基本概念,它允许程序同时执行多个任务,从而提高程序的性能和效率。本文将通过三个实用的例子,讲解 Java 多线程的基本概念和使用方法。 第一个例子:创建多...
Java线程安全是多线程编程中的一个关键概念,它涉及到多个线程访问共享资源时可能出现的问题。在Java中,线程安全问题通常与并发、内存模型和可见性有关。Java内存模型(JMM)定义了如何在多线程环境下共享数据的...
电子书相关:包含4个有关JAVA线程的电子书(几乎涵盖全部有关...第五章 Java线程编程的例子 第六章 Java线程调度 第七章 Java线程调度例子 第八章 和同步相关的高级主题 第九章 多处理器机器上的并行化 第十章 线程组
Java线程的优先级范围是1(`Thread.MIN_PRIORITY`)到10(`Thread.MAX_PRIORITY`),默认优先级是5(`Thread.NORM_PRIORITY`)。线程优先级越高,获取CPU资源的可能性越大,但并不能保证优先级高的线程一定会先执行...
本示例将探讨如何在Java中实现一个线程安全的订票系统。 首先,我们要理解什么是线程安全。线程安全是指当多个线程访问同一代码块时,即使这些线程是并发执行的,程序也能保持其正确性,即不会出现数据混乱或丢失的...
4. **线程状态**:Java线程有五种状态:新建、可运行、运行、阻塞和死亡。了解这些状态可以帮助开发者更好地控制和调试线程。 5. **线程优先级**:每个线程都有一个优先级,Java中从1(`MIN_PRIORITY`)到10(`MAX_...
总的来说,理解和掌握Java线程的创建、状态管理、同步机制和线程安全是进行多线程编程的基础,这对于开发高效、稳定的并发程序至关重要。在实际编程中,应充分利用Java提供的工具和机制,避免潜在的并发问题,提升...
根据提供的文件内容,我们可以看到一个典型的Java线程同步的例子,其中涉及到了生产者(Producer)和消费者(Consumer)模式,以及同步方法和同步代码块的使用。 知识点一:生产者消费者模式 生产者消费者模式是多...
Java线程是Java编程中的重要概念,它允许程序同时执行多个任务,极大地提高了程序的并发性和效率。在Java中,线程是程序执行的最小单位,由Java虚拟机(JVM)来管理和调度。理解并熟练掌握Java线程的创建、控制以及...
java线程分析java project例子,里面分析了sleep(),join(),yield()和wait以及notify等方法的使用以及需要注意的地方。
Java线程是多任务编程的重要概念,它允许程序同时执行多个独立的任务,从而提高系统效率和响应速度。在Java中,线程可以分为用户线程和守护线程,前者是程序运行的基础,而后者是在所有用户线程结束时才终止的后台...
### Java多线程小例子详解 #### 知识点一:基本多线程示例 在给定的代码示例中,我们首先看到的是一个简单的Java多线程应用实例。这个例子展示了如何创建并启动一个新的线程。在`ThreadDemo`类的`main`方法中,...
本资源“java线程例子大全”包含了十八个单元的实例代码,覆盖了Java线程操作的多个方面。 1. **线程创建** - 继承`Thread`类:创建一个新的类,该类继承自`Thread`,然后重写`run()`方法。实例化后调用`start()`...
Java线程是多任务编程的重要组成部分,特别是在现代计算环境中,多核处理器的广泛使用使得并发执行成为提升系统性能的关键。本篇文章将详细讲解几个Java线程的实例,帮助你深入理解这一关键概念。 首先,我们需要...
本示例程序"java线程例子程序"展示了如何启动并管理多个线程,同时计算它们的运行时间和总挂起时间。 首先,我们来看`ThreadPrj.java`,这个文件很可能包含了线程类的定义。在这个类中,通常会重写`run()`方法,该...
根据提供的文件信息,我们可以归纳出以下关于Java多线程的经典示例中的关键知识点: ### Java多线程实现方式 在Java中,实现多线程有两种主要的方法:通过继承`Thread`类或者实现`Runnable`接口。 #### 继承...
Java线程在其生命周期中会经历多种状态: 1. **新状态(New)**:线程对象已创建,但尚未调用`start()`方法。 2. **可运行状态(Runnable)**:线程已准备好执行,等待CPU时间片分配。 3. **阻塞状态(Blocked)**:线程...
java多线程同步互斥访问实例,对于初学者或是温故而知新的同道中人都是一个很好的学习资料