Java中,实现多线程有两种途径:继承java.lang.Thread类或者实现Runnable接口。
1.通过继承Thread实现多线程
package net.jerryblog.multithread;
public class MyThread extends Thread {
private String name;
public MyThread(String name) {
this.name = name;
}
public void run() {
for(int i = 0; i < 1000; i++) {
System.out.println("Thread " + i + "——>" + name);
}
}
public static void main(String[] args) {
MyThread th1 = new MyThread("Thread A");
MyThread th2 = new MyThread("Thread B");
th1.start();
th2.start();
}
}
需要说明的是,线程的启动,需要调用start()方法,不能直接调用run()方法。run()方法只是线程执行的一个模板,也就是说线程按照其中的代码执行。此外,循环中i的范围需要设置大一点,不然的话很可能看到的现象还是A线程执行完了所有次数才开始执行B线程。这是因为现在的电脑配置可能都比较好,设置的循环次数太小的话,可能在一个CPU时间片内,A线程就已经都执行完了。
对于继承Thread的类的一个实例,不能连续两次调用其start()方法。否则会抛出IllegalThreadStateException
package net.jerryblog.multithread;
public class TestIllegalThreadStateException extends Thread {
public void run() {
}
public static void main(String[] args) {
TestIllegalThreadStateException th = new TestIllegalThreadStateException();
th.start();
th.start();
}
}
这时就会报异常:
Exception in thread "main" java.lang.IllegalThreadStateException
at java.lang.Thread.start(Thread.java:612)
at net.jerryblog.multithread.TestIllegalThreadStateException.main(TestIllegalThreadStateException.java:11)
2.实现Runnable接口
package net.jerryblog.multithread;
public class TestRunnable implements Runnable {
private String name;
public TestRunnable(String name) {
this.name = name;
}
public void run() {
for(int i = 0; i < 500; i++) {
System.out.println("Thread " + i + "——>" + name);
}
}
public static void main(String[] args) {
TestRunnable tr1 = new TestRunnable("Thread A");
TestRunnable tr2 = new TestRunnable("Thread B");
Thread t1 = new Thread(tr1);
Thread t2 = new Thread(tr2);
t1.start();
t2.start();
}
}
分享到:
相关推荐
Java多线程编程是开发高并发应用的关键技术之一。在这个学习笔记中,主要讨论了Java中的线程同步机制,包括volatile关键字、synchronized以及Lock接口,特别是ReentrantLock的使用。 首先,对于线程1和线程2的疑惑...
Java JDK 6学习笔记——PPT简体版是针对初学者和有经验的开发者们的一份宝贵资源,它深入浅出地介绍了Java编程语言的核心概念和技术。这份笔记以PPT的形式呈现,使得学习过程更加直观易懂,适合课堂教学或自我学习。...
—————————————————————————————————————————————————- java中的多线程 在java中要想实现多线程,有两种手段,一种是继续Thread类,另外一种是实现Runabl
多线程是Java编程中一个重要的高级特性,笔记中详细介绍了Thread线程类及多线程的使用,以及线程池的概念,这些都对于编写高效、可维护的并发程序至关重要。同时,还涉及了Socket网络编程和双缓冲队列,这些是构建...
【Java学习笔记——全面解析】 Java作为一种广泛应用的高级编程语言,是软件开发领域的核心力量。这份"学习笔记——资料"涵盖了Java学习的各个方面,旨在帮助初学者和有经验的开发者巩固基础,提升技能。以下是对这...
Java支持多线程编程,通过Thread类或实现Runnable接口创建线程。线程同步机制包括synchronized关键字、wait()、notify()和notifyAll()方法,以及Lock接口和相关实现类,如ReentrantLock。 八、网络编程 Java提供了...
【Java多线程】 Java内置对多线程的支持,通过Thread类或实现Runnable接口创建线程。线程可以并行执行任务,提高程序效率。同时,Java提供了synchronized关键字、wait()、notify()和notifyAll()等机制来控制线程间...
Java 语言的特点包括简单、安全、跨平台、面向对象、支持多线程等。Java 的三个技术平台分别是 JavaSE、JavaEE、JavaME。 Java 程序的运行环境简称为 JDK,javac.exe 和 java.exe 这两个可执行程序存放在 JDK 安装...
9. **多线程**:Java内置了对多线程的支持,可以创建Thread类的实例或实现Runnable接口来创建和管理线程,以实现程序的并发执行。 10. **网络编程**:Java提供了Socket和ServerSocket类,用于实现客户端-服务器的...
10. **多线程**:Java提供内置的多线程支持,使开发者可以方便地开发并发程序。 **运行原理:** Java程序的运行需要通过Java虚拟机(JVM)。Java源代码首先被编译成字节码,字节码是一种中间格式,可以在不同的...
8. **多线程**:Java内置了对多线程的支持,你可以通过继承Thread类或实现Runnable接口来创建线程。 9. **文件和目录操作**:Java的`java.io.File`类提供了文件和目录的操作,如创建、删除、重命名以及读取文件属性...
**Java学习笔记——由林信良带来的编程之旅** 在编程世界中,Java是一种广泛应用的、面向对象的编程语言,以其跨平台的特性、强大的功能和易读性深受开发者喜爱。林信良的“Java学习笔记”PPT为初学者提供了一个...
9. **多线程**:Java内置了对多线程的支持,通过Thread类和Runnable接口可以创建和管理线程。 10. **反射和注解**:反射允许你在运行时检查类、接口、字段和方法的信息,而注解提供了一种元数据方式,可以用于代码...
通常情况下,一个进程至少包含一个线程,而Java虚拟机默认有两个线程:主线程`main`和垃圾回收线程`GC`。 #### 二、并发与并行 - **并发**:指在同一时间段内,有多个程序(任务)同时处于已启动到未完成的状态。...
### Java学习笔记——基础知识详解 #### 一、Java开发环境(JDK)与运行环境(JRE) Java技术的核心在于其强大的跨平台能力,这主要得益于Java的两大环境:JDK(Java Development Kit)和JRE(Java Runtime ...
Java语言的特性包括简单性、面向对象、分布式、解释性、稳健性、安全性、体系结构中立性、可移植性、高性能、多线程和动态性等。为了能够运行Java程序,我们需要搭建相应的Java语言环境,包括JDK和JRE,并且需要正确...
本章讲解了Swing和JavaFX两种GUI库的使用方法,包括如何创建窗口、布局管理器的使用、事件监听器的注册等内容。通过本章的学习,读者可以了解如何构建具有友好界面的应用程序。 以上内容概括了《Java编程思想笔记》...
在这个"java-demo"项目中,我们可以深入学习Java技术,特别是关于多线程、IO流以及两种不同的IO模型——阻塞IO(BIO)和非阻塞IO。此外,还涉及到Netty框架的应用,这是一个高性能、异步事件驱动的网络应用框架,常...
在Redis源码阅读笔记(10)——事件中,我们将探讨Redis如何利用事件模型来实现非阻塞I/O,以及相关的编程模型如Reactor模式和NIO。 Redis使用了一个基于epoll的事件处理器,epoll是Linux系统提供的一种高效I/O多路...