Java——创建线程的两种方式
来源:互联网 发布:淘宝客的推广链接 编辑:程序博客网 时间:2024/06/01 07:16
/*四个窗口同时卖票因为是同时,所以使用多线程创建4个线程,都是卖票因为都是卖票,说明四个线程的任务是一样的只需要定义一个类继承Thread*/// 以下是用第一种创建线程的方法(具体方法在我的上一篇博客中有介绍),但是并不符合要求// 线程和线程任务是绑定在一起的/*class Ticket extends Thread{ // 把num设置成静态的实现各个线程共享同一个num // 但是万一情况复杂,不可能把所有的成员变量都设置成静态的 // 所以,这种创建线程的方法用在这里并不合适 private static int num = 50; public void run(){ //死循环,会一直进行下去 while(true){ if(num>0){ System.out.println(Thread.currentThread().getName()+"...sale..."+num--); } } }}class test{ public static void main(String[] args){ // 当num等其他成员变量不是静态的时候,每一个线程初始的情况都是一样的,并不符合实际要求 // 但是又不能把所有的成员变量都定义成静态的,所以就有了第二种创建线程的方式 Ticket t1 = new Ticket(); Ticket t2 = new Ticket(); Ticket t3 = new Ticket(); Ticket t4 = new Ticket(); t1.start(); t2.start(); t3.start(); t4.start(); }}*//*为了解决四个线程共享票的问题,使用静态方法肯定是不行的需要使用创建线程的第二种方式:1、创建实现了Runnable接口的子类2、重写Runnable接口中的run方法3、创建实现了Runnable接口的子类的对象4、创建Thread类的对象,也就是在创建线程5、把实现了Runnable接口的子类对象作为参数传递给Thread类的构造方法把线程任务进行了描述,也就是面向对象线程任务和线程对象的分离,线程执行什么任务不再重要,只要是实现了Runnable接口的子类对象都可以作为参数传递给Thread的构造方法实现接口的同时,也可以继承父类*///下面用第二种方法创建线程,解决上述问题//1、创建实现了Runnable接口的子类,这是一个描述线程任务的类class Ticket implements Runnable{ public int num = 50; //2、重写Runnable接口中的run方法 public void run(){ while(true){ if(num>0){ System.out.println(Thread.currentThread().getName()+"...sale..."+num--); } } }}class test{ //3、创建实现了Runnable接口的子类的对象 public static void main(String[] args){ Ticket t = new Ticket(); //4、创建Thread类的对象,也就是在创建线程 //5、把实现了Runnable接口的子类对象作为参数传递给Thread类的构造方法 Thread t1 = new Thread(t); Thread t2 = new Thread(t); Thread t3 = new Thread(t); Thread t4 = new Thread(t); t1.start(); t2.start(); t3.start(); t4.start(); }}
/*为什么创建线程的第二种方式可以解决卖票问题? 第一种创建线程的方式:线程和线程任务是绑定在一起的,创建4个线程就创建了4份资源 第二种创建线程的方式:线程和线程任务进行了分离,只需要创建一个任务,让4个线程分别去执行*///Thread类也实现了Runnable接口,所以也可以这么写/*class Test extends Thread{}*///但是不推荐上面的写法class Test implements Runnable{}class test{ public static void main(String[] args){ Test test = new Test(); Thread t1 = new Thread(test); }}
阅读全文
2 0
- Java线程——两种创建线程的方式
- Java——线程创建两种方式的对比
- Java——创建线程的两种方式
- java 创建线程 的两种方式
- Java线程创建的两种方式
- java创建线程的两种方式
- java创建线程的两种方式
- java线程的两种创建方式
- Java创建线程的两种方式
- java线程创建的两种方式
- Java创建线程的两种方式
- JAVA创建线程的两种方式
- Java线程创建的两种方式
- java创建线程的两种方式
- 黑马程序员——java创建线程的两种创建方式
- Java线程第三课:线程的两种创建方式
- 【java线程】创建线程的两种方式
- 黑马程序员——java基础——Java中创建线程的两种方式
- codevs 2822 爱在心中 Tarjan 解题报告
- springmvc文件上传报错
- Qt常用类QPixmap
- 文件系统的简单操作
- 树莓派变身Aria2下载服务器
- Java——创建线程的两种方式
- 《着色器和屏幕特效》读书笔记第三章-光照模型
- P1436 棋盘分割
- EasyPlayerPro(Windows)开发系列之解决分片录像时间戳不正常的问题
- poj 3417 Network LCA+树形dp
- 《着色器和屏幕特效》读书笔记第四章-PBR
- 织梦cms/dedecms清理冗余废弃未引用图片方法
- java--1.非空判断
- Qt常用类QIcon