继承的方式创建多线程 笔记:

/**继承的方式创建多线程
* 线程的创建方法:
* 1.创建一个继承于Thread 的子类
* 2.重写Thread类的run()方法 ,方法内实现此子线程 要完成的功能
* 3.创建一个子类的对象
* 4.调用线程的start() ,启动此线程,调用相应的run()方法
* 易错总结:
* 1.每个Thread只能start()一次!
* 2.多个Thread之间争抢到CPU的时间不总是一致的!
* -------------------------------------------
* 线程的常用方法:
* 1.start() /run()
* 2.Thread currentThread() ;//静态的,返回当前的线程Thread类型
* 3.yield() :静态方法实现线程的让步一次, 类似于sleep()
* 4.join( ) : 假设在A线程中调用B线程的join()方法,表示当执行到此方法时,A线程停止;
* 直至B线程执行完毕,A线程再接着join()之后的代码执行
* 5.getName() /setName()
* 8.isAlive() :判断当前线程是否还存活!
* 9.sleep(long l ): 显式地让子线程睡眠1毫秒!
* 10.线程通信 wait() notify() notifyall()
*
* 设置线程的优先级:setPriority(MaxPriority / MinPriority) /getPriority()
*/

继承的方式创建多线程 代码:

import org.junit.Test;
//1.创建一个继承于Thread 的子类
class SubThread extends Thread{
//2.重写Thread类的run()方法 ,方法内实现此子线程 要完成的功能
public void run(){
for(int i=1;i<=20;i++){
try {
Thread.currentThread().sleep(10);
System.out.println(Thread.currentThread().getName()+"睡眠10ms!");
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(currentThread().getName()+" "+i+"\t");
}
}
}
public class TestThread {
//[1] 测试1:两个线程同时输出20个数,每次运行的结果不一致!
public static void main(String[] args) throws InterruptedException {
//3.创建一个子类的对象
Thread st=new SubThread();
//4.调用线程的start() ,启动此线程,调用相应的run()方法
st.setName(" 子线程 ");
st.start();
Thread.currentThread().setName(" 主线程 ");
//作为比较的主线程!
for(int i=21;i<=40;i++){
System.out.println(Thread.currentThread().getName()+" "+i+"**");
// if(i%5==0)
// Thread.currentThread().yield();
st.join();
} } @Test //[2] 测试2:多线程的练习
public void test2(){
(new Thread1()).start();
(new Thread2()).start();
}
class Thread1 extends Thread{
public void run() {
for(int i=1;i<=50;i++){
if(i%2==0)
System.out.println(currentThread().getName()+": "+i);
}
}
}
class Thread2 extends Thread{
public void run() {
for(int i=1;i<=50;i++){
if(i%2!=0)
System.out.println(currentThread().getName()+": "+i);
}
}
}
}

运行结果:

         主线程  21**
子线程 睡眠10ms!
子线程 1
子线程 睡眠10ms!
子线程 2
子线程 睡眠10ms!
子线程 3
子线程 睡眠10ms!
子线程 4
子线程 睡眠10ms!
子线程 5
子线程 睡眠10ms!
子线程 6
子线程 睡眠10ms!
子线程 7
子线程 睡眠10ms!
子线程 8
子线程 睡眠10ms!
子线程 9
子线程 睡眠10ms!
子线程 10
子线程 睡眠10ms!
子线程 11
子线程 睡眠10ms!
子线程 12
子线程 睡眠10ms!
子线程 13
子线程 睡眠10ms!
子线程 14
子线程 睡眠10ms!
子线程 15
子线程 睡眠10ms!
子线程 16
子线程 睡眠10ms!
子线程 17
子线程 睡眠10ms!
子线程 18
子线程 睡眠10ms!
子线程 19
子线程 睡眠10ms!
子线程 20
主线程 22**
主线程 23**
主线程 24**
主线程 25**
主线程 26**
主线程 27**
主线程 28**
主线程 29**
主线程 30**
主线程 31**
主线程 32**
主线程 33**
主线程 34**
主线程 35**
主线程 36**
主线程 37**
主线程 38**
主线程 39**
主线程 40**

( 每次的运行结果不一致,这里仅寻去一次!)



 线程模拟模拟火车站开启三个窗口售票代码:

package 任务196_多线程;

/**模拟火车站开启三个窗口售票,火车站总票数20张!
*
*/
class Window extends Thread{
static int tickets=20;
public void run() {
while(true){
if(tickets>0){
System.out.println(currentThread().getName()+" 为您售票!"+
"剩余票数:"+tickets);
tickets--;
}
else
break; //记得在这里解除死循环!!
}
}
} public class TestWindows {
public static void main(String[] args) {
Window w1=new Window();
Window w2=new Window();
Window w3=new Window(); w1.setName("窗口1");
w2.setName("窗口2");
w3.setName("窗口3");
w1.start();
w2.start();
w3.start();
} }

 线程模拟模拟火车站开启三个窗口售票运行结果:

窗口2 为您售票!剩余票数:20
窗口3 为您售票!剩余票数:20
窗口1 为您售票!剩余票数:20
窗口3 为您售票!剩余票数:18
窗口2 为您售票!剩余票数:19
窗口2 为您售票!剩余票数:15
窗口3 为您售票!剩余票数:16
窗口1 为您售票!剩余票数:17
窗口3 为您售票!剩余票数:13
窗口2 为您售票!剩余票数:14
窗口3 为您售票!剩余票数:11
窗口3 为您售票!剩余票数:9
窗口3 为您售票!剩余票数:8
窗口3 为您售票!剩余票数:7
窗口3 为您售票!剩余票数:6
窗口3 为您售票!剩余票数:5
窗口3 为您售票!剩余票数:4
窗口3 为您售票!剩余票数:3
窗口3 为您售票!剩余票数:2
窗口3 为您售票!剩余票数:1
窗口1 为您售票!剩余票数:12
窗口2 为您售票!剩余票数:10

Java基础 继承的方式创建多线程 / 线程模拟模拟火车站开启三个窗口售票的更多相关文章

  1. 零基础学习java------day18------properties集合,多线程(线程和进程,多线程的实现,线程中的方法,线程的声明周期,线程安全问题,wait/notify.notifyAll,死锁,线程池),

    1.Properties集合 1.1 概述: Properties类表示了一个持久的属性集.Properties可保存在流中或从流中加载.属性列表中每个键及其对应值都是一个字符串 一个属性列表可包含另 ...

  2. Java分享笔记:创建多线程 & 线程同步机制

    [1] 创建多线程的两种方式 1.1 通过继承Thread类创建多线程 1.定义Thread类的子类,重写run()方法,在run()方法体中编写子线程要执行的功能. 2.创建子线程的实例对象,相当于 ...

  3. Java基础复习笔记系列 八 多线程编程

    Java基础复习笔记系列之 多线程编程 参考地址: http://blog.csdn.net/xuweilinjijis/article/details/8878649 今天的故事,让我们从上面这个图 ...

  4. Java基础-时间复杂度计算方式

    Java基础-时间复杂度计算方式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   时间复杂度通常是衡量算法的优劣的,衡量算法的时间严格来讲是很难衡量的,由于不同的机器性能不用环境 ...

  5. 《Java基础——继承》

    Java基础--继承     一.类的继承: 规则: 1.一个子类只能有一个父类,但一个父类可以有多个子类,每个子类都可以作为父类使用. 2.若一个类没有声明父类,则默认其父类为Object. 3.父 ...

  6. Java基础学习总结(88)——线程创建与终止、互斥、通信、本地变量

    线程创建与终止 线程创建 Thread类与 Runnable 接口的关系 public interface Runnable {         public abstract void run(); ...

  7. java用Thread方式创建多线程

    进程:一个正在执行的程序,每一个进程都有一个执行顺序,该顺序是一个执行路径,或者叫一个控制单元.线程:进程中一个独立的控制单元.线程控制着进程的执行.一个进程中至少有一个线程. java VM中至少有 ...

  8. JAVA通过继承Thread来创建线程

    创建一个线程的第二种方法是创建一个新的类,该类继承Thread类,然后创建一个该类的实例. 继承类必须重写run()方法,该方法是新线程的入口点.它也必须调用start()方法才能执行. 实例 // ...

  9. Java基础学习总结(17)——线程

    一.线程的基本概念 线程理解:线程是一个程序里面不同的执行路径 每一个分支都叫做一个线程,main()叫做主分支,也叫主线程. 程只是一个静态的概念,机器上的一个.class文件,机器上的一个.exe ...

随机推荐

  1. Java中用FileInputStream和FileOutputStream读写txt文件,文件内容乱码的问题,另附循环代码小错误

    乱码问题大概就是编码格式不一样,搜了很多都是这么说的,修改编码解决乱码问题链接: https://blog.csdn.net/weixin_42496466/article/details/81189 ...

  2. ByteDance面试

    1.HashMap.HashSet源码解读 2.Http状态码.包头内容有哪些 响应头 说明 示例 状态 Access-Control-Allow-Origin 指定哪些网站可以跨域源资源共享 Acc ...

  3. Tengine编译安装+lua+sticky模块

    一.两个依赖包 有yum的直接 yum   yum –y install openssl openssl-devel prce prce-devel zlib zlib-devel 没有yum环境的, ...

  4. Django项目-简易博客系统(附源码) --Python Web

    Django入门级项目: 链接:https://pan.baidu.com/s/13Z7v-gky6Xgka-Gom8-HQQ 提取码:uagu

  5. zabbix 部署包安装

      关于zabbix的安装方式,官网提供了几种方法,分别是:部署包安装.源码安装.容器安装.容器安装我之前已经写过一篇,而现在这一篇是关于部署包安装的.   按照官网的说法,我们需要如下几个步骤:   ...

  6. LeetCode_#1_两数之和 Two Sum_C++题解

    1. 两数之和 Two Sum 题目描述 Given an array of integers, return indices of the two numbers such that they ad ...

  7. Vue.js 父子组件相互传递数据

    父传子 : 子组件接收变量名=父组件传递的数据 如::f-cmsg="fmsg"  注意驼峰问题 子传父:@子组件关联的方法名 = 父组件接受的方法名 如:@func=" ...

  8. python多任务基础

    1.多任务:两个程序段同时运行2.为某个函数创建线程并启动: import threading 线程名 = threading.Thread(target = 函数名,args = 参数元组) #创建 ...

  9. BFS练习

    1. 给定$d,k$, 求最小的被$d$整除, 且各数位仅有$k$和$0$组成的数. $(1\le k\le 9,1\le n\le 1e6)$ 从高位到低位$BFS$, BFS求出字典序最小的方案. ...

  10. 深度挖坑:从数据角度看人脸识别中Feature Normalization,Weight Normalization以及Triplet的作用

    深度挖坑:从数据角度看人脸识别中Feature Normalization,Weight Normalization以及Triplet的作用 周翼南 北京大学 工学硕士 373 人赞同了该文章 基于深 ...