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线程:线程的同步-同步块 Java线程:并发协作-生产者消费者模型 Java线程:并发协作-死锁 Java线程:volatile关键字 Java线程:新特征-线程池 Java线程:新特征-有返回值的线程 ...
Java线程:概念与原理 2 一、操作系统中线程和进程的概念 2 二、Java中的线程 3 三、Java中关于线程的名词解释 3 四、线程的状态转换和生命周期 4 Java线程:创建与启动 7 Java线程:线程名称的设定及获取 10 Java...
Java多线程读大文件 java多线程写文件:多线程往队列中写入数据
Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式...
java多线程PPT 多线程基本概念 创建线程的方式 线程的挂起与唤醒 多线程问题
Java多线程两个例子,一个是自定义线程池方法实现多线程运行个数的控制,可以解决多线程内存不足的问题。另一个是利用线程通信,读写先关的典型实例
java 多线程 哲学家思考问题 java 多线程 哲学家思考问题 ...java 多线程 哲学家思考问题java 多线程 哲学家思考问题java 多线程 哲学家思考问题java 多线程 哲学家思考问题 java 多线程 哲学家思考问题
java多线程并发查询数据库,使用线程池控制分页,并发查询。
一个java 多线程操作数据库应用程序!!!
Java多线程--等待所有子线程执行完的五种方法 Java多线程--等待所有子线程执行完的五种方法 Java多线程--等待所有子线程执行完的五种方法 Java多线程--等待所有子线程执行完的五种方法 Java多线程--等待所有子线程...
详细的讲解了java多线程的原理,并配有代码进行实战,适合java初学者和想对多线程有进一步了解的人。
java多线程经典案例,线程同步、线程通信、线程阻塞等经典案例
java多线程的使用方法如何使用,怎么使用,使用过程中有什么要注意的
多线程启动.java多线程启动.java多线程启动.java多线程启动.java
java多线程处理大数据,可根据配置的线程数,任务去调度处理
java 多线程 其实就是每个线程都拥有自己的内存空间,多线程之间的通信,比例A线程修改了主内存(main方法的线程)变量,需要把A线程修改的结果同步到主线程中,这时B线程再从主线程获取该变量的值,这样就实现了...
Java多线程机制 9.1 Java中的线程 9.2 Thread的子类创建线程 9.3 使用Runable接口 9.4 线程的常用方法 9.5 GUI线程 9.6 线程同步 9.7 在同步方法中使用wait()、notify 和notifyAll()方法 9.8 挂起、恢复和终止线程 ...