线程的使用方法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();
}
}
运行结果
线程的使用方法start run sleep join的更多相关文章
- Thread的中断机制(interrupt),循环线程停止的方法
一.中断原理 中断线程 线程的thread.interrupt()方法是中断线程,将会设置该线程的中断状态位,即设置为true,中断的结果线程是死亡.还是等待新的任务或是继续运行至下一步,就取决于这个 ...
- 线程的状态有哪些,线程中的start与run方法的区别
线程在一定条件下,状态会发生变化.线程一共有以下几种状态: 1.新建状态(New):新创建了一个线程对象. 2.就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法. ...
- python的threading.Thread线程的start、run、join、setDaemon
Pycharm整体看下Thread类的内容:模拟的是Java的线程模型 表示方法method,上面的锁头表示这个是类内部的方法,从方法名字命名规范可以看出,都是_和__开头的,一个下划线表示是子类可以 ...
- 线程sleep,wait,notify,join,yield方法解析
线程的五种状态 线程从创建到销毁一般分为五种状态,如下图: 1) 新建 当用new关键字创建一个线程时,就是新建状态. 2) 就绪 调用了 start 方法之后,线程就进入了就绪阶段.此时,线程不会立 ...
- Java中run(), start(), join(), wait(), yield(), sleep()的使用
run(), start(), join(), yield(), sleep() 这些是多线程中常用到的方法. run(): 每个Thread中需要实现的方法, 如果直接调用的话, 会是和单线程一样的 ...
- 【java线程】的wait、sleep、join、yied
1.概述 使用Thread相对来说比较简单,没有什么成本,但是通常来说,我们使用线程基本就是覆写run方法,然后调用线程对象的start函数启动线程. 对于面试人员来说,这些都不是面试官会问到的问题, ...
- Java 如何实现线程间通信?(notify、join、CountdownLatch、CyclicBarrier、FutureTask、Callable )
转自:https://mp.weixin.qq.com/s?__biz=MzI4Njc5NjM1NQ==&mid=2247486499&idx=1&sn=d3f2d6959df ...
- Java多线程中run(), start(), join(), wait(), yield(), sleep()的使用
Run 每个Thread中需要实现的方法, 如果直接调用的话, 会是和单线程一样的效果, 要另起线程需要使用start(). start 新起线程调用run(). 主线程不等待直接往下执行 Yield ...
- Java多线程 线程状态及转换 wait sleep yield join
线程的状态转化关系(1). 新建状态(New):新创建了一个线程对象.(2). 就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法.该状态的线程位于可运行线程池中, ...
随机推荐
- Scala环境(集成idea)
1 语言介绍 他已经出生15年了,就像明星一样,谁都不可能一开始就人气爆棚粉丝无数,得慢慢混. 据说这家伙已经威胁到了Java的地位,我当时也是被这句话惊到,才毅然决然的认识了他.目前也正在努力学习中 ...
- Laravel 5 中使用 Laravel Excel 实现 Excel/CSV 文件导入导出功能
1.简介 Laravel Excel 在 Laravel 5 中集成 PHPOffice 套件中的 PHPExcel,从而方便我们以优雅的.富有表现力的代码实现Excel/CSV文件的导入和导出. 该 ...
- FileProvider相关 Failed to find configured root that contains
问题: 使用FileProvider构造SD卡中文件uri时异常 java.lang.IllegalArgumentException: Failed to find configured root ...
- “永恒之蓝”(Wannacry)蠕虫全球肆虐 安装补丁的方法
“永恒之蓝”利用0day漏洞 ,通过445端口(文件共享)在内网进行蠕虫式感染传播,没有安装安全软件或及时更新系统补丁的其他内网用户就极有可能被动感染,所以目前感染用户主要集中在企业.高校等内网环境下 ...
- 5、Zookeeper命令操作
一.Zookeeper的四字命令 Zookeeper支持某些特定的四字命令字母与其的交互.他们大多数是查询命令,用来获取Zookeeper服务的当前状态及相关信息.用户在客户端可以通过telnet或n ...
- oracle数据库组件列表及相关的数据字典视图
Component Data dictionary tables and views Database V$DATABASE, V$VERSION, V$INSTANCEShared server V ...
- element-ui input输入框回车事件
<el-input maxlength="30" v-model="answerInput" @keyup.enter.native="addA ...
- 【产品设计】【转】APP界面设计规范编写指南(人人都是产品经理)
转自 :http://www.woshipm.com/ucd/608557.html 作者:EID_UX_DESIGN,微信公众号:EID_center 原文地址:http://www.ui.cn/d ...
- Python中字符串/字典/json之间的转换
import json #定义一个字典d1,字典是无序的 d1 = { "a": None, "b": False, "c": True, ...
- 关于连接oracle工具plsql的一些使用
上面图片是打开客户端PL\SQL devepoper的连接内容 进入页面后就可以进行相关的sql语句编写了 将几个结果放入一个表中 select 30+30 as 结果 from dual union ...
例2 sleep()方法,1000是1秒
