java如何实现多线程_Java中实现多线程的两种方式
/**
* 使用Thread类模拟4个售票窗口共同卖100张火车票的程序
*
* 没有共享数据,每个线程各卖100张火车票
*
* @author jiqinlin
* */public class ThreadTest { public static void main(String[] args){ new MyThread().start(); new MyThread().start(); new MyThread().start(); new MyThread().start();
}
public static class MyThread extends Thread{ //车票数量 private int tickets=100;
@Override public void run() { while(tickets>0){
System.out.println(this.getName()+"卖出第【"+tickets--+"】张火车票");
}
}
}
}
/**
* 使用Runnable接口模拟4个售票窗口共同卖100张火车票的程序
*
* 共享数据,4个线程共同卖这100张火车票
* @author jiqinlin
* */public class RunnableTest { public static void main(String[] args) {
Runnable runnable=new MyThread(); new Thread(runnable).start(); new Thread(runnable).start(); new Thread(runnable).start(); new Thread(runnable).start();
}
public static class MyThread implements Runnable{ //车票数量 private int tickets=100; public void run() { while(tickets>0){
System.out.println(Thread.currentThread().getName()+"卖出第【"+tickets--+"】张火车票");
}
}
}
}
采用继承Thread类方式:
(1)优点:编写简单,如果需要访问当前线程,无需使用Thread.currentThread()方法,直接使用this,即可获得当前线程。
(2)缺点:因为线程类已经继承了Thread类,所以不能再继承其他的父类。 采用实现Runnable接口方式:
采用实现Runnable接口的方式:
(1)优点:线程类只是实现了Runable接口,还可以继承其他的类。在这种方式下,可以多个线程共享同一个目标对象,所以
非常适合多个相同线程来处理同一份资源的情况,从而可以将CPU代码和数据分开,形成清晰的模型,较好地体现了面向对象
的思想。
(2)缺点:编程稍微复杂,如果需要访问当前线程,必须使用Thread.currentThread()方法。
java如何实现多线程_Java中实现多线程的两种方式相关推荐
- java hashmap遍历顺序_Java中HashMap遍历的两种方式
第一种: Map map = HashMap(); Iterator iter = map.entrySet().iterator(); (iter.hasNext()) { Map.Entry e ...
- java类初始数组_java中数组初始化的三种方式是什么
java中数组初始化的三种方式是:1.静态初始化,如[int a[] = {2, 0, 1, 9, 2020}]:2.动态初始化,如[int[] c = new int[4]]:3.默认初始化,如[i ...
- java new class 直接调用_java中创建对象的的两种方式具体解释,一个是new一个是调用Class类的newinstance方法?...
展开全部 1.new 使用java的关键字new来创建对象实例.构造函数链中的所有构造函数都32313133353236313431303231363533e78988e69d833133333739 ...
- java 如何初始化数组_java中初始化数组的三种方式分别是什么
三种初始化方式: 1.静态初始化:创建+赋值 2.动态初始化:先创建再赋值 3.默认初始化:创建之后若不赋值则会被赋对应数据类型的默认值 (视频教程推荐:java视频) 我们来看一下具体代码:publ ...
- java中创建两种线程的方式_java中创建线程的两种方式有什么区别?
*** 一.创建线程 1.继承Thread类 定义类继承Thread, 重写run()方法, 将线程中要执行的代码写在run()方法中 创建该类对象, 调用start()方法就可以开启一条新线程, 新 ...
- java获取文件后缀_Java获取文件后缀的两种方式
在对文件进行操作的时候,我们经常需要用到文件的后缀.但是Java API中并没有提供获取文件后缀的方法.下面的工具方法可以帮助我们实现这个目的. 方法1 代码示例: package org.4spac ...
- Java中HashMap遍历的两种方式
第一种: Map map = new HashMap(); Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { Ma ...
- 实验四:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用
贺邦+原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 实验目的: 使用库函数 ...
- 使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用
实验4:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用 姓名:李冬辉 学号:20133201 注: 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http ...
- sh执行文件 参数传递_详解shell中脚本参数传递的两种方式
方式一:$0,$1,$2.. 采用$0,$1,$2..等方式获取脚本命令行传入的参数,值得注意的是,$0获取到的是脚本路径以及脚本名,后面按顺序获取参数,当参数超过10个时(包括10个),需要使用${ ...
最新文章
- 正则显示手机号显示3 4 4 格式
- java 替换四个字节的字符 '\xF0\x9F\x98\x84\xF0\x9F)的解决方案
- 在 Jenkins 中使用声明式 Pipeline 构建 Android 项目
- 【python】关于控制台的中文输出出现\x形式的问题 python常用包与如何安装
- poj2186强联通(牛仰慕)
- 算法设计原则验证实验报告_算法设计与分析实验报告 统计数字问题
- Drupal 自定义主题实体 Theming Custom Entities
- java注解---@SuppressWarnings
- MVC视图中处理Json
- 18.抽象模板方法———获取程序运行的时间
- 爬虫 动态生成useragent的功能 fake-useragent库
- 深入jar包:从jar包中读取资源文件
- 两个有序链表序列的交集_剑指offer第21天:合并两个有序链表
- JavaScript学习笔记——正则验证
- TypeScript:对象
- (转)对冲基金投身“另类数据”淘金热
- 基于UDS协议的Bootloader
- 四叶草启动引导配置工具 !Clover Configurator中文版下载!
- TOPSIS法——利用原始数据进行综合评价
- Matlab 和 Simulink 学习基础入门