join线程:
1、Thread线程提供了让一个线程等待另外一个线程执行完成的方法:join方法。当某个正在执行的线程A调用了B线程的join()方法时,那么A线程将会被阻塞,知道B线程执行完成为止才会可能执行。
2、join有三种重载形式:
join():等待被join的线程执行完成。
join(long mills):等待被join的线程的最长时间为mills毫秒,如果在mills毫秒内,被join的线程还没有执行完成则不再等待。
package com.yt.manager.thread;
/**
* join()线程
*
* @author zxf 让一个线程等待另外一个线程执行完成的方法
*/
public class JoinThread extends Thread {
public JoinThread(String name) {
super(name);
}
@Override
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println(getName() + " " + i);
}
}
public static void main(String[] args) throws InterruptedException {
for (int i = 0; i < 100; i++) {
if (i == 20) {
JoinThread joinThread = new JoinThread("被join的线程");
joinThread.start();
// main线程调用了joinThread线程的join()方法, main线程必须等
// joinThread线程执行结束后才会向下执行。
joinThread.join();
}
System.out.println(Thread.currentThread().getName() + " " + i);
}
}
}
线程睡眠Sleep:
1、如果我们需要将当前正在执行的线程暂停一段时间,并进入阻塞状态,则可以调用Thread类的静态方法sleep(long millis)。当当前线程调用sleep方法进入阻塞状态后,在其sleep时间内,该线程不会获得任何执行的机会,即使系统中没有其它正在运行的线程,处于sleep的线程
也不会运行,因此sleep方法常用来暂停程序的执行。
package com.yt.manager.thread;
/**
* 线程睡眠sleep
* @author zxf
*
*/
public class SleepThread {
public static void main(String[] args) throws InterruptedException {
for (int i = 0; i < 10; i++) {
System.out.println(i);
Thread.sleep(5000);
}
}
}
线程让步:
1、它可以让当前正在执行的线程暂停,但不会阻塞线程,它只是将该线程转入就绪状态,yield()方法只是让线程调度器重新调度一次。完全有可能的情况是,当某个线程调用了yield()方法暂停之后,线程调度器又将其调度起来重新执行。实际上当某个线程调用了yield()方法暂停后,只有优先级与当前线程相同,或者优先级比当前线程高的线程才有可能获得执行的机会。
package com.yt.manager.thread;
/**
* 线程让步
*
* @author zxf
*
*/
public class YieldThread extends Thread {
public YieldThread(String name) {
super(name);
}
@Override
public void run() {
for(int i=0;i<100;i++){
System.out.println(getName()+" "+i);
//当i==20时,让当前线程做出让步
if(i==21){
Thread.yield();
}
}
}
/**
* @param args
*/
public static void main(String[] args) {
YieldThread y1 = new YieldThread("高级");
//y1.setPriority(Thread.MAX_PRIORITY);
y1.start();
YieldThread y2 = new YieldThread("低级");
//y2.setPriority(Thread.MIN_PRIORITY);
y2.start();
}
}
分享到:
相关推荐
Java线程:线程的同步-同步方法 Java线程:线程的同步-同步块 Java线程:并发协作-生产者消费者模型 Java线程:并发协作-死锁 Java线程:volatile关键字 Java线程:新特征-线程池 Java线程:新特征-有返回值的线程 ...
Java多线程机制是Java编程中至关重要的一部分,它允许程序同时执行多个任务,提升应用程序的效率和响应性。以下是对各个知识点的详细说明: 9.1 Java中的线程: Java程序中的线程是在操作系统级别的线程基础上进行...
Java多线程是Java编程中的一个重要概念,它允许程序同时执行多个任务,提高了程序的效率和响应速度。在Java中,实现多线程有两种主要方式:继承Thread类和实现Runnable接口。 1. 继承Thread类: 当我们创建一个新...
### Java多线程操作数据库:深入解析与应用 在当今高度并发的应用环境中,Java多线程技术被广泛应用于处理数据库操作,以提升系统的响应速度和处理能力。本文将基于一个具体的Java多线程操作数据库的应用程序,深入...
Java多线程读大文件 java多线程写文件:多线程往队列中写入数据
Java多线程是Java编程中的重要概念,尤其在如今的多核处理器环境下,理解并熟练掌握多线程技术对于提高程序性能和响应速度至关重要。本资料详细讲解了Java多线程的原理,并提供了丰富的实战代码,非常适合Java初学者...
Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式...
Java多线程是Java编程中的重要概念,它允许程序同时执行多个任务,极大地提升了程序的效率和性能。在Java中,实现多线程有两种主要方式:通过实现Runnable接口或者继承Thread类。本案例将深入探讨Java多线程中的关键...
Java多线程是Java编程语言中一个非常重要的概念,它允许开发者在一个程序中创建多个执行线程并行运行,以提高程序的执行效率和响应速度。在Java中,线程的生命周期包含五个基本状态,分别是新建状态(New)、就绪...
总之,Java多线程技术是软件开发中的重要技能,它涉及到线程池的使用、线程同步和通信等多个方面。通过学习和理解`MaxThreadCountTest`中的例子,开发者可以更好地掌握如何在实际项目中控制线程数量,优化程序性能,...
在本文中,我们将深入浅出Java多线程编程的世界,探索多线程编程的基本概念、多线程编程的优点、多线程编程的缺点、多线程编程的应用场景、多线程编程的实现方法等内容。 一、多线程编程的基本概念 多线程编程是指...
Java多线程编程是Java开发中的重要组成部分,它允许程序同时执行多个任务,极大地提高了程序的效率和响应性。在Java中,多线程主要通过继承Thread类或实现Runnable接口来实现。本教程《Java多线程编程核心技术》将...
本主题将深入探讨如何在Java多线程环境下实现进度条功能。 首先,理解Java多线程的基本概念至关重要。Java通过Thread类和Runnable接口来支持多线程。创建一个新线程通常有两种方式:继承Thread类并重写run()方法,...
### JAVA中的单线程与多线程概念解析 #### 单线程的理解 在Java编程环境中,单线程指的是程序执行过程中只有一个线程在运行。这意味着任何时刻只能执行一个任务,上一个任务完成后才会进行下一个任务。单线程模型...
在Java编程中,多线程并发是...总之,Java的多线程并发实例可以帮助我们更好地理解和实践线程控制、同步机制以及经典的设计模式,提升我们的编程能力。通过不断学习和实践,我们可以编写出高效、安全的多线程并发程序。
java多线程PPT 多线程基本概念 创建线程的方式 线程的挂起与唤醒 多线程问题
综上所述,"java多线程查询数据库"是一个涉及多线程技术、线程池管理、并发控制、分页查询等多个方面的复杂问题。通过理解和掌握这些知识点,我们可以有效地提高数据库操作的效率和系统的响应速度。
### Java多线程编程经验 #### 一、Java线程:概念与原理 现代操作系统都是多任务操作系统,其中多线程是一种重要的实现多任务的方式。线程是进程内的一个执行单位,一个进程可以包含多个线程。例如,在Java应用...
Java多线程是Java编程中的核心概念,它允许程序同时执行多个任务,提高了系统的效率和响应性。在Java中,多线程的实现主要通过两种方式:继承Thread类和实现Runnable接口。理解并掌握多线程的使用对于任何Java开发者...
#### 二、Java多线程分页查询原理及实现 ##### 1. 分页查询基础概念 分页查询是指在查询数据时,将数据分成多个页面展示,而不是一次性返回所有数据。这种方式能够有效地减少单次查询的数据量,从而提高查询速度和...