今天回顾了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的更多相关文章

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

    一.中断原理 中断线程 线程的thread.interrupt()方法是中断线程,将会设置该线程的中断状态位,即设置为true,中断的结果线程是死亡.还是等待新的任务或是继续运行至下一步,就取决于这个 ...

  2. 线程的状态有哪些,线程中的start与run方法的区别

    线程在一定条件下,状态会发生变化.线程一共有以下几种状态: 1.新建状态(New):新创建了一个线程对象. 2.就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法. ...

  3. python的threading.Thread线程的start、run、join、setDaemon

    Pycharm整体看下Thread类的内容:模拟的是Java的线程模型 表示方法method,上面的锁头表示这个是类内部的方法,从方法名字命名规范可以看出,都是_和__开头的,一个下划线表示是子类可以 ...

  4. 线程sleep,wait,notify,join,yield方法解析

    线程的五种状态 线程从创建到销毁一般分为五种状态,如下图: 1) 新建 当用new关键字创建一个线程时,就是新建状态. 2) 就绪 调用了 start 方法之后,线程就进入了就绪阶段.此时,线程不会立 ...

  5. Java中run(), start(), join(), wait(), yield(), sleep()的使用

    run(), start(), join(), yield(), sleep() 这些是多线程中常用到的方法. run(): 每个Thread中需要实现的方法, 如果直接调用的话, 会是和单线程一样的 ...

  6. 【java线程】的wait、sleep、join、yied

    1.概述 使用Thread相对来说比较简单,没有什么成本,但是通常来说,我们使用线程基本就是覆写run方法,然后调用线程对象的start函数启动线程. 对于面试人员来说,这些都不是面试官会问到的问题, ...

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

    转自:https://mp.weixin.qq.com/s?__biz=MzI4Njc5NjM1NQ==&mid=2247486499&idx=1&sn=d3f2d6959df ...

  8. Java多线程中run(), start(), join(), wait(), yield(), sleep()的使用

    Run 每个Thread中需要实现的方法, 如果直接调用的话, 会是和单线程一样的效果, 要另起线程需要使用start(). start 新起线程调用run(). 主线程不等待直接往下执行 Yield ...

  9. Java多线程 线程状态及转换 wait sleep yield join

    线程的状态转化关系(1). 新建状态(New):新创建了一个线程对象.(2). 就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法.该状态的线程位于可运行线程池中, ...

随机推荐

  1. ant design + react,自动获取上传音频的时长(react-audio-player)

    在后台管理项目中,用户要求上传音频,并且自动获取音频时长. 第一步, import { Upload, Button, Icon } from 'antd'; 第二步,在表单中使用 Upload 组件 ...

  2. 把java程序作为windows服务运行

    参考: https://www.jianshu.com/p/fc9e4ea61e13 https://blog.csdn.net/qq_28566071/article/details/8088250 ...

  3. vscode, cmake编译多个C++文件

    目的是利用vscode及相关插件编译多个C++文件. 我已经装好cmake和mingw并且将它们的路径添加到系统变量path中了. vscode装上如下几个插件: 点击vscode左上角   文件-& ...

  4. ado.net调用返回多结果集的存储过程

  5. 知识点:Java 集合框架图

    知识点:Java 集合框架图 总结:Java 集合进阶精讲1 总结:Java 集合进阶精讲2-ArrayList Java集合框架图 我们经常使用的Arrayist.LinkedList继承的关系挺复 ...

  6. node项目初始化的一些配置

    1. const port = process.env.PORT || 9001; 本地开发用9001端口 2. package.json中配置几个启动命令 "scripts": ...

  7. kubernetes学习笔记之十:RBAC

    第一章.RBAC介绍 在Kubernetes中,授权有ABAC(基于属性的访问控制).RBAC(基于角色的访问控制).Webhook.Node.AlwaysDeny(一直拒绝)和AlwaysAllow ...

  8. win7+win10系统使用日常经验集锦

    请保留此份 Cmd Markdown 的欢迎稿兼使用说明, 当然你也可以使用彩色字体. 或者使用小体字. 或者使用大体字. 如需撰写新稿件,点击顶部工具栏右侧的 新文稿 或者使用快捷键 Ctrl+Al ...

  9. Python cx_Oracle 安装小记

    因为我的个人网站 restran.net 已经启用,博客园的内容已经不再更新.请访问我的个人网站获取这篇文章的最新内容,Python cx_Oracle 安装小记 SQLAlchemy 是 Pytho ...

  10. mysql数据库支持 emoji表情

    关键点: 1. 修改mysql数据库表ALTER table <tablename>  modify <clolum>  char(100) character set utf ...