今天回顾了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. Mysql组复制之单主模式(一)

    环境 系统:CentOS release 6.9 (Final) Mysql:5.7 机器: S1 10.0.0.7 lemon S2 10.0.0.8 lemon2 S3 10.0.0.9 lemo ...

  2. NetCore 控制台读取配置文件

    依赖: Microsoft.Extensions.Configuration Microsoft.Extensions.Configuration.Binder Microsoft.Extension ...

  3. 黄聪:什么是XSS攻击

    XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中.比如这些代码包括HTML代码和客户端脚本.攻击者利用XSS漏洞旁路掉访问控制——例如同源 ...

  4. Android手机上Audio DSP频率低 memory小的应对措施

    我在前面的文章(Android智能手机上的音频浅析)中说过Android手机上有一块专门用于音频处理的DSP,它的特点是频率低(一般几百MHZ).内部memory小(通常不超过100k word).要 ...

  5. 支付宝 net

  6. MDI容器

    MDI容器 具体步骤如下: private void 销售ToolStripMenuItem_Click(object sender, EventArgs e) { VisibledForm(); F ...

  7. async+await一起使用

    /** get 请求 * @param {接口地址} url * @param {请求参数} params */ get(url,params){ return new Promise((resolv ...

  8. syslog-ng日志收集分析服务搭建及配置

    syslog-ng日志收集分析服务搭建及配置:1.网上下载eventlog_0.2.12.tar.gz.libol-0.3.18.tar.gz.syslog-ng_3.3.5.tar.gz三个软件: ...

  9. 【Linux】【Jenkins】配置过程中,立即构建时,maven找不到的问题解决方案

    在Linux环境下配置Jenkins执行时,发现不能执行Maven,这个比较搞了. A Maven installation needs to be available for this projec ...

  10. hadoop2.6.4集群笔记

    ---恢复内容开始--- 一,linux下的准备工作 1,修改主机名: vi /etc/sysconfig/network 2,修改ip vi /etc/sysconfig/network-scrip ...