今天回顾了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. 十三、springboot (八)Admin

    1.创建server端spring-boot-admin 2.添加依赖 <parent> <groupId>org.springframework.boot</group ...

  2. JavaScript开发中使用频率较高的一些方法

    1.填充字符串 ES7推出了字符串补全长度的功能.如果某个字符串不够指定长度,会在头部或尾部补全. String.prototype.padStart(maxLength, fillString=’ ...

  3. Android之ListView动态添加数据(SQLiteOpenHelper类添加数据)

    一.SQLiteOpenHelper类: 这次我们通过sqlite来动态添加数据,接下来我们创建一个openHelper.java,在前面sqlite博客中我们已经详细的讲了SQLite的创建及使用等 ...

  4. 寻找二叉树中的最低公共祖先结点----LCA(Lowest Common Ancestor )问题(递归)

    转自 剑指Offer之 - 树中两个结点的最低公共祖先 题目: 求树中两个节点的最低公共祖先. 思路一: ——如果是二叉树,而且是二叉搜索树,那么是可以找到公共节点的. 二叉搜索树都是排序过的,位于左 ...

  5. python之路——12

    王二学习python的笔记以及记录,如有雷同,那也没事,欢迎交流,wx:wyb199594 复习 1.装饰器 开发原则:开放封闭原则 作用:不改变原函数的调用方式,为函数前后扩展功能 本质:闭包函数 ...

  6. linux 配置vue环境

    系统 [root@Gao conf.d]# uname -a 工具 1.Final Shell 2.工具截图 需要下载的部分 node.js    npm   cnpm   vue-cli 安装nod ...

  7. Spring AOP的底层实现原理

    Spring的两大核心之一就是AOP,AOP:面向切面编程.在说原理之前,得先知道一些 AOP的专业术语. AOP的专业术语 连接点(JoinPoint):增强执行的位置(增加代码的位置),Sprin ...

  8. SpringBoot 之 MVC

    SpringBoot MVC 和静态资源 首先,我们一定要搞清楚,mvc 配置和 static 配置的联系和区别. mvc 配置其实就是给 spring mvc 框架用的, 具体来说, 比如 @Req ...

  9. SpringBoot 之静态资源

    boot 的默认的静态资源有多个, 由 ResourceProperties 配置了默认值: private static final String[] CLASSPATH_RESOURCE_LOCA ...

  10. 算术运算,赋值运算,if语句,while,continue语句

    算术运算 print(10 / 3)=3.333333333333 print(10 // 3)=3 print(10 ** 2)=100 赋值运算增量赋值 age=18 age+=1 print(a ...