线程的使用方法start run sleep join

今天回顾了Java的线程的一些知识

例1:下面代码存有详细的解释 主要是继承Thread类与实现Runnable接口 以及start()和run()方法

package com.date0607;

/** * 在一个程序中同时运行的多个独立流程,每一个独立流程就是一个线程。 * 线程开发两种方式:继承Thread类与实现Runnable接口. * start() 执行是无序的,不固定的。run() 执行有先后顺序。 * 继承Thread是面向对象的编程方式。 * 实现Runnable接口解决了单一继承限制 */class MyThread1 extends Thread{    public void run() {     for (int i = 1; i <= 5; i++){         System.out.println(i + " $$$");     }    }}class MyThread2 extends  Thread{    public  void run(){        for (int i = 1; i <= 5; i++){            System.out.println(i + " ###");        }    }}

class MyRunnable2 implements Runnable{    public  void run(){        for (int i = 1; i <= 5; i++){            System.out.println(i + " @@@");        }    }

}public class Test_0607_Demo01 {    public static  void main(String [] args){        Thread t1 = new MyThread1();        Thread t2 = new MyThread2();        Runnable target = new MyRunnable2();        Thread t3 = new Thread(target);        //初始状态        //t1.start();        //t2.start();        //运行状态        t1.run();        t2.run();        t3.run();    }}运行结果 自己执行试试哦

例2 sleep()方法,1000是1秒
package com.date0607;

/** * sleep()可以控制下线程,但是不准备。 * sleep(1000) 1000指1s。 */

class MyThread3  extends  Thread{    public  void run(){        for (int i = 1; i <= 5; i++){            System.out.println(i + " ###");        }        try{            Thread.sleep(20000);        }catch (InterruptedException e){}    }}

class MyRunnable3 implements Runnable{    public  void run(){        for (int i = 1; i <= 5; i++){            System.out.println(i + " @@@");        }        try{            Thread.sleep(20000);        }catch (InterruptedException e){}    }

}public class Test_0607_Demo02{    public static  void main(String [] args){        Thread t2 = new MyThread3();        Runnable target = new MyRunnable3();        Thread t3 = new Thread(target);        t2.run();        t3.run();    }}运行结果 等待20秒,执行下一个线程

例3 join()的使用方法

package com.date0607;

/** *join方法也会导致阻塞。 * 特点:如果当前线程中掉用了另外一个线程的join方法,当前线程会立即阻塞,直到另外一个线程执行完成。 */

class MyThread33  extends  Thread{    public  void run(){        for (int i = 1; i <= 5; i++){            System.out.println(i + " ###");        }    }}

class MyThread44 extends  Thread{    Thread t;    public  void run(){        try{            t.join();         }catch (InterruptedException e){}        for (int i = 1; i <= 5; i++){            System.out.println(i + " @@@");        }    }

}public class Test_0607_Demo03{    public static  void main(String [] args){        MyThread33 t1 = new MyThread33();        MyThread44 t2 = new MyThread44( );        t2.t= t1;        t1.start();        t2.start();    }}运行结果 
 
 


原文地址:https://www.cnblogs.com/zhishifx/p/9151900.html

时间: 2024-10-03 22:40:04

线程的使用方法start run sleep join的相关文章

Thread的中断机制(interrupt),循环线程停止的方法

一.中断原理 中断线程 线程的thread.interrupt()方法是中断线程,将会设置该线程的中断状态位,即设置为true,中断的结果线程是死亡.还是等待新的任务或是继续运行至下一步,就取决于这个程序本身.线程会不时地检测这个中断标示位,以判断线程是否应该被中断(中断标示值是否为true).它并不像stop方法那样会中断一个正在运行的线程. 判断线程是否被中断 判断某个线程是否已被发送过中断请求,请使用Thread.currentThread().isInterrupted()方法(因为它将

转载,IBM一片文章,关于线程的start方法执行

原文地址:http://www.ibm.com/developerworks/cn/java/j-lo-processthread/#icomments Java 中的进程与线程 进程与线程在程序开发中无疑占有极其重要的地位,而 Java 语言为了能提供统一的.与平台无关的关于进程和线程的编程接口,必然要对操作系统提供的相关功能做进一步封装.本文主要介绍 Java 中关于进程与线程的相关封装类,揭示如何创建 Java 进程与线程,Java 封装类和实际的系统本地进程和线程是如何对应的,以及使用

java 线程停止的方法

线程停止的方法: 记住一点,线程的停止, 1.自己运行完了, 2.如果是无限循环,在外部,只能用flag标记来操作. 但是当线程处于冻结状态(阻塞),sleep,wait,join,(这三个方法抛出异常.) 就不会读取到flag. 这个时候,我们要清除线程的冻结状态,让它回到运行中. 如果,线程没有使之冻结的语句,则,inierrupt()不进行任何操作. interrupt()方法,会使sleep,wait,jion方法抛出异常. 然后,我们在处理异常的语句中来操作. 我推荐的方式:不在cat

java 线程的使用方法

一.使用线程的三种基本方法 1.扩展Thread类 public class Mythread extends Thread{ public void run(){ System.out.println("拓展thread类"); } } //启动线程 Thread myThread =new Thread(); MyThread.start(); 2.实现Runnable接口 public class Mythread implements Runnable{ public MyCl

start、run、join

首先得了解什么是主线程,当Java程序启动时,一个线程立刻运行,该线程通常叫做程序的主线程(main thread).主线程的重要性体现在两方面:1. 它是产生其他子线程的线程:2. 通常它必须最后完成执行,因为它执行各种关闭动作. run 只是运行此方法,依旧处于主线程内,不会开启新线程 start 开启一个新线程,并放置于就绪队列 join 开启一个新线程并加入到主线程. 备注:主线程生成并起动了子线程,如果子线程里要进行大量的耗时的运算,主线程将于子线程结束之前结束,但是如果主线程处理完其

Java 如何实现线程间通信?(notify、join、CountdownLatch、CyclicBarrier、FutureTask、Callable )

转自:https://mp.weixin.qq.com/s?__biz=MzI4Njc5NjM1NQ==&mid=2247486499&idx=1&sn=d3f2d6959df7299bfbe2d663f6c4d353&chksm=ebd6330fdca1ba19316e89bedcaab01be8fdb81ba7ba3a9456c51fa28e80b2b1b33265d513ee&mpshare=1&scene=23&srcid=0113bUJHO

java线程相关基本方法

java线程中常用的基本方法有wait,notify,notifyAll,sleep,join,yield等. 线程的生命周期一共分为五个部分,分别是:新建(New).就绪(Runnable).运行(Running).阻塞(Blocked)和死亡(Dead).由于cpu需要在多条线程中切换因此线程状态也会在多次运行和阻塞之间切换. 线程等待(wait) 调用该方法会使线程会进入WAITING状态,只有等待另外线程的通知或者被中断才会返回,需要注意的是调用wait()方法后,会释放对象的锁,所以,

线程常用的方法

/* 线程常用的方法: Thread(String name) 初始化线程的名字 setName(String name) 设置线程对象名 getName() 返回线程的名字 sleep() 线程睡眠指定的毫秒数. 静态的方法, 那个线程执行了sleep方法代码那么就是那个线程睡眠. currentThread() 返回当前的线程对象,该方法是一个静态的方法, 注意: 那个线程执行了currentThread()代码就返回那个线程 的对象. getPriority() 返回当前线程对象的优先级

[转]JAVA线程停止的方法

有三种方法可以使终止线程. 1.  使用退出标志,使线程正常退出,也就是当run方法完成后线程终止. 2.  使用stop方法强行终止线程(这个方法不推荐使用,因为stop和suspend.resume一样,也可能发生不可预料的结果). 已废弃 3.  使用interrupt方法中断线程. 如何停止java的线程一直是一个困恼我们开发多线程程序的一个问题.这个问题最终在Java5的java.util.concurrent中得到了回答:使用interrupt(),让线程在run方法中停止. 简介