编写一个线程有两种方法,一种是实现Runnable接口,另一种方法是继承Thread类。
下面是实现Runnable接口的方法:
public class TestThread {
public static void main(String[] args) {
Runner r1 = new Runner();
Thread t = new Thread(r1);
t.start();
for(int i=0; i<100; i++) {
System.out.println("main" + i);
}
}
}
class Runner implements Runnable {
@Override
public void run() {
for(int i=0; i<100; i++) {
System.out.println(i);
}
}
}
下面是继承Thread类的方法:
public class TestThread {
public static void main(String[] args) {
Runner r1 = new Runner();
r1.start();
for(int i=0; i<100; i++) {
System.out.println("main" + i);
}
}
}
class Runner extends Thread {
@Override
public void run() {
for(int i=0; i<100; i++) {
System.out.println(i);
}
}
}
因为继承了Thread,所以main方法中直接start就可以了。
线程的状态:
sleep的使用方法:
就是让线程停止一会,代码如下:
public class TestThread {
public static void main(String[] args) {
Runner r1 = new Runner();
r1.start();
try {
Thread.sleep(10000);
} catch(InterruptedException e) {
}
r1.interrupt(); //这个方法太粗暴了,不太好。用下面的flag来停止比较好.
}
}
class Runner extends Thread {
boolean flag = true;
@Override
public void run() {
while(flag) {
System.out.println("=====");
try {
sleep(1000);
} catch(InterruptedException e) {
return ;
}
}
}
}
join方法
即合并,相当于方法调用。
代码如下:
public class TestThread {
public static void main(String[] args) {
Runner r1 = new Runner("runner1");
r1.start();
try {
r1.join();
} catch(InterruptedException e) {
}
for(int i=1; i<100; i++) {
System.out.println("-------");
}
}
}
class Runner extends Thread {
Runner(String name) {
super(name);
}
@Override
public void run() {
for(int i=0; i<100; i++) {
System.out.println("=====");
try {
sleep(1000);
} catch(InterruptedException e) {
return ;
}
}
}
}
相当于方法的调用。
运行原理如图:
yield方法:
让出CPU让别的线程执行一会
代码如下:
public class TestThread {
public static void main(String[] args) {
Runner r1 = new Runner("runner1");
Runner r2 = new Runner("runner1");
r1.start();
r2.start();
}
}
class Runner extends Thread {
Runner(String name) {
super(name);
}
@Override
public void run() {
for(int i=0; i<100; i++) {
System.out.println(getName() + i);
if(i%10 == 0) {
yield();
}
}
}
}
每到10的倍数的时候,那个线程都会让出CPU让另一个线程去运行。
- 大小: 50.3 KB
- 大小: 1.9 KB
分享到:
相关推荐
电子书相关:包含4个有关JAVA线程的电子书(几乎涵盖全部有关线程的书籍) OReilly.Java.Threads.3rd.Edition.Sep.2004.eBook-DDU Java Thread Programming (Sams) java线程第二版中英文 java线程第二版中英文 ...
java 线程工具类 java 线程工具类java 线程工具类 java 线程工具类java 线程工具类 java 线程工具类java 线程工具类 java 线程工具类java 线程工具类 java 线程工具类java 线程工具类 java 线程工具类java 线程工具...
下面将围绕“Java线程”这一主题展开详细的介绍与解释。 ### Java线程基础 在Java语言中,线程是程序执行流的基本单元。一个标准的Java应用程序至少会有一个线程,即主线程,用于执行程序的主要逻辑。通过创建多个...
Java线程状态流转图是一种用于描述Java线程生命周期中不同的状态和状态转换的图形表示方式。该图形展示了Java线程从创建到终止的整个生命周期,并详细介绍了每种状态的特点和转换规则。 NEW(初始化状态) 在Java...
Java线程是并发编程的核心部分,它允许程序在同一时间执行多个独立的任务,从而提高系统效率和响应速度。本文将深入探讨Java线程的概念、生命周期、实现方式以及相关的同步机制。 首先,理解线程的基本概念至关重要...
Java线程是Java编程中的重要概念,特别是在多核处理器和并发处理中不可或缺。Java线程允许程序在同一时间执行多个不同的任务,从而提高了程序的效率和响应性。在燕山大学信息学院计算机系的课程中,李峰教授讲解了...
Java的TDA线程转储分析器是一个用于分析Sun Java VM生成的线程转储和堆信息的小型Swing GUI(目前用1.4测试)。它从提供的日志文件中解析线程转储和类直方图。它提供关于发现的线程转储的统计信息,提供关于锁定监视器...
TDA(Thread Dump Analyzer)是一款强大的Java线程分析工具,它能够帮助开发者深入理解应用在运行时的线程状态,包括线程的阻塞情况、等待资源、死锁等问题。下面将详细介绍TDA的使用方法、功能以及它如何帮助我们...
Java线程有10个优先级(MIN_PRIORITY, NORM_PRIORITY, MAX_PRIORITY),默认优先级是NORM_PRIORITY。但是,线程优先级并不保证绝对的执行顺序,操作系统调度策略可能影响实际执行顺序。 7. join()方法: 一个线程...
《Java线程(第三版)》是一本深入探讨Java线程技术的专业书籍,旨在帮助开发者理解和掌握Java平台上的多线程编程。Java线程是并发编程的重要组成部分,它允许程序同时执行多个任务,从而充分利用系统资源,提高程序的...
Java线程是Java编程语言中的一个核心概念,它允许程序同时执行多个任务,极大地提高了程序的并发性和效率。本教程将深入探讨Java线程的使用,帮助开发者掌握这一关键技术。 一、线程基础 1. **线程的概念**:线程...
Java线程是多任务编程的重要概念,它允许程序同时执行多个独立的任务,从而提高系统效率和响应速度。在Java中,线程可以分为用户线程和守护线程,前者是程序运行的基础,而后者是在所有用户线程结束时才终止的后台...
JAVA线程dump的分析 JAVA线程dump是指在JAVA程序中,当前线程的状态和调用堆栈的快照,能够帮助开发者了解当前程序的执行情况,诊断问题和性能瓶颈。生成JAVA线程dump的方法在不同的操作系统下是不同的,在Windows...
Java线程是Java编程语言中的核心概念,尤其在多任务处理和并发编程中扮演着重要角色。线程允许一个程序内部同时执行多个独立的控制流,使得程序能够更高效地利用处理器资源。本文将深入解析Java线程的相关知识点,...
在Java编程环境中,单线程指的是程序执行过程中只有一个线程在运行。这意味着任何时刻只能执行一个任务,上一个任务完成后才会进行下一个任务。单线程模型简化了程序设计,降低了程序复杂度,使得开发者可以更专注于...
#### 一、Java线程基础知识概述 **1.1 什么是线程?** 线程是程序执行流的最小单元,是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。在Java中,线程是一种轻量级的进程,...
java 线程相关工具类.java 线程相关工具类.java 线程相关工具类.java 线程相关工具类.java 线程相关工具类.java 线程相关工具类.java 线程相关工具类.java 线程相关工具类.java 线程相关工具类.java 线程相关工具类....
Java线程是多任务编程中的核心概念,它允许程序同时执行多个不同的任务,极大地提高了程序的效率和响应性。在Java中,线程是通过Java.lang.Thread类或实现Runnable接口来创建和管理的。这份“java线程文档大全”包含...
本资源"JAVA线程学习(源代码)"提供了关于Java线程的源代码示例,帮助我们深入理解和实践线程的使用。 首先,我们要理解Java中的线程模型。Java线程由`java.lang.Thread`类或`java.util.concurrent.Executor`框架来...
#### 一、Java线程基本概念 1. **如何编写与启动线程** - **方式一:继承Thread类** ```java class MyThread extends Thread { @Override public void run() { // 业务逻辑 } } new MyThread().start(); ...