[javaSE] 多线程(join方法)

多条线程并发执行,随机切换,调用join()方法,会使当前线程所在的线程(一般主线程)冻结,直到当前线程结束,所在的线程才恢复继续执行

class JoinTestDemo implements Runnable{

    @Override
    public void run() {

        for(int x=0;x<=5;x++){
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            System.out.println(Thread.currentThread().getName()+"===="+x);
        }
    }

}
public class JoinDemo {

    /**
     * @param args
     * @throws InterruptedException
     */
    public static void main(String[] args) throws InterruptedException {
        JoinTestDemo join=new JoinTestDemo();
        Thread t1=new Thread(join);
        Thread t2=new Thread(join);
        t1.start();
        t2.start();
        //上面两个子线程交替执行,主线程冻结,t1走完才解冻
        t1.join();
        //显示主线程
        for(int x=0;x<=5;x++){
            Thread.sleep(100);
            System.out.println(Thread.currentThread().getName()+"===="+x);
        }
    }

}

线程的优先级,调用Thread对象的setPriority()方法,可以设置优先级,参数:1,5,10最明显;Thread.MAX_PRIORITY,Thread.MIN_PRIORITY,Thread.NORM_PRIORITY

调用Thread.yield();可以暂时释放执行权,达到线程平均运行的目的

时间: 2024-11-03 22:08:04

[javaSE] 多线程(join方法)的相关文章

学习多线程-join方法

thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程.比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B. 具体例子看链接:http://uule.iteye.com/blog/1101994 关于Thread.sleep()的作用就是强制让当前的线程进入休眠状态 具体案例看链接:http://blog.sina.com.cn/s/blog_5c5bc9070100ytxz.html

多线程-join()方法

在很多情况下,主进程创建并启动子线程,如果子线程中要进行大量的耗时运算,主线程往往将早于子线程结束之前结束.这时,如果主线程想等待子线程执行完成之后再结束,比如子线程处理一个数据,主线程要取得这个数据中的值,就要用到join()方法了.方法join()的作用是等待线程对象销毁. package org.github.lujiango; public class Test01 { static class MyThread extends Thread { @Override public voi

C#中多线程Thread的Join方法

当我们的程序中使用多线程时,对资源的操作是需要特别留意的.如下面的例子:程序中有两个string对象(初始值为空),main函数中分别开启了两个线程去分别设置这两个string对象的值,然后在main函数中打印出这两个字符串的值.代码如下: static string str1 = string.Empty; static string str2 = string.Empty; static void Main(string[] args) { Thread worker1 = new Thre

Java多线程中的join方法

新建一个Thread,代码如下: 1 package com.thread.test; 2 3 public class MyThread extends Thread { 4 private String name; 5 public MyThread(String name) { 6 this.name = name; 7 } 8 @Override 9 public void run() { 10 for (int i = 0; i < 100; i++) { 11 System.out.

java多线程基本概述(七)——join()方法

在很多情况下,主线程创建并启动子线程,如果子线程中有大量的耗时运算,主线程将早于子线程结束,如果想让主线程等待子线程结束后再结束,那么我们可以使用join()方法.调用join()方法的意思是当前线程使调用了该方法的线程执行完成然后再执行自己本身.api文档如下: public final void join(long millis, int nanos) throws InterruptedException Waits at most millis milliseconds plus nan

多线程(守护线程、join方法、线程优先级、线程组)

setDaemon(boolean on): 守护线程(后台线程),若前台(显示)线程都结束了则后台线程自动结束. 使用setDaemon(boolean on)方法,必须在开启线程前将线程标记为守护线程. 示例: class setDaemon implements Runnable { public void run() { while (true) { System.out.println(Thread.currentThread().getName()+"...run"); }

Java多线程中join方法详解

join()方法用于让当前执行线程等待join线程执行结束.其实现原理是不停的检查join线程是否存活,如果join线程存活则让当前线程永远等待. join()方法部分实现细节 while(isAlive()) { wait(0) } 其中wait(0)表示永远等待下去. join线程中止后,线程的this.notifyAll()方法会被调用,调用notifyAll()是在JVM里调用的所有在JDK中看不到,大家可以看JVM源码 示例程序: public calss ThreadTest{ pu

多线程---其他方法 停止线程、守护线程、join方法

第三方停止线程: 原来是stop(),因为该方法有些问题,所以被interrupt()方法取代,它的用途跟机制是 当没有指定的方式让冻结的线程恢复到运行状态时,这时需要对冻结进行清除,强制让线程恢复到运行状态中来,这样就可以让操作标记来结束线程. Thread类提供了interrupt()方法. 守护线程: 线程对象.setDaemon():该方法表示,前台线程(主线程) 一结束,后台线程(后台运行线程)立即结束. Join方法: 等待该线程终止.就是说在主线程运行时候,读到了该线程的开始阶段,

JavaSE:多线程总结(Thread)

今天来进行JavaSE多线程的总结: 先从几个概念说起: 程序:是一组指令的集合,一段静态的代码. 进程:每一个运行的程序,都会对应一个进程. 线程:一个进程中包含一个或多个线程,如果包含多个线程,那么这个程 序就是支持多线程的. 多线程的优点: ①提高了计算机对CPU的利用率. ②提高了程序的响应速度 线程的创建,运行 线程的创建: ①继承Thread类:必须重写run()方法 ②实现Runnable接口:必须实现run()方法 通常将run()的主体称为线程体 线程的启动: 通过start(