Java使用Thread和Runnable的线程实现方法比较
作者:cakincqm 发布时间:2021-11-17 07:52:54
本文实例讲述了Java使用Thread和Runnable的线程实现方法。分享给大家供大家参考,具体如下:
一 使用Thread实现多线程模拟铁路售票系统
1 代码
public class ThreadDemo
{
public static void main( String[] args )
{
TestThread newTh = new TestThread( );
// 一个线程对象只能启动一次
newTh.start( );
newTh.start( );
newTh.start( );
newTh.start( );
}
}
class TestThread extends Thread
{
private int tickets = 5;
public void run( )
{
while( tickets > 0 )
{
System.out.println( Thread.currentThread().getName( ) + " 出售票 " + tickets );
tickets -= 1;
}
}
}
2 运行
Thread-0 出售票 5
Thread-0 出售票 4
Thread-0 出售票 3
Thread-0 出售票 2
Thread-0 出售票 1
Exception in thread "main" java.lang.IllegalThreadStateException
at java.lang.Thread.start(Thread.java:708)
at ThreadDemo.main(ThreadDemo.java:16)
3 说明
一个线程只能启动一次
二 main方法中产生4个线程
1 代码
public class ThreadDemo
{
public static void main(String[]args)
{
// 启动了四个线程,分别执行各自的操作
new TestThread( ).start( );
new TestThread( ).start( );
new TestThread( ).start( );
new TestThread( ).start( );
}
}
class TestThread extends Thread
{
private int tickets = 5;
public void run( )
{
while (tickets > 0)
{
System.out.println(Thread.currentThread().getName() + " 出售票 " + tickets);
tickets -= 1;
}
}
}
2 运行
Thread-0 出售票 5
Thread-0 出售票 4
Thread-0 出售票 3
Thread-0 出售票 2
Thread-0 出售票 1
Thread-1 出售票 5
Thread-1 出售票 4
Thread-1 出售票 3
Thread-1 出售票 2
Thread-1 出售票 1
Thread-2 出售票 5
Thread-2 出售票 4
Thread-2 出售票 3
Thread-2 出售票 2
Thread-2 出售票 1
Thread-3 出售票 5
Thread-3 出售票 4
Thread-3 出售票 3
Thread-3 出售票 2
Thread-3 出售票 1
三 使用Runnable接口实现多线程,并实现资源共享
1 代码
public class RunnableDemo
{
public static void main( String[] args )
{
TestThread newTh = new TestThread( );
// 启动了四个线程,并实现了资源共享的目的
new Thread( newTh ).start( );
new Thread( newTh ).start( );
new Thread( newTh ).start( );
new Thread( newTh ).start( );
}
}
class TestThread implements Runnable
{
private int tickets = 5;
public void run( )
{
while( tickets > 0 )
{
System.out.println( Thread.currentThread().getName() + " 出售票 " + tickets );
tickets -= 1;
}
}
}
2 运行
Thread-0 出售票 5
Thread-0 出售票 4
Thread-0 出售票 3
Thread-0 出售票 2
Thread-0 出售票 1
更多java相关内容感兴趣的读者可查看本站专题:《Java面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
来源:https://blog.csdn.net/chengqiuming/article/details/95664631
猜你喜欢
- 一、什么是备忘录模式定义:在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态
- 在前面的内容已经学会了如何定义变量和初始化变量。定义变量的目的就是为了操作数据。Java 语言中给我们提供了专门用来操作这些数据的代码符号,
- 前言不积跬步无以至千里,不积小流,无以成江海在公司一般来说,都只会接触一些CRUD的业务,很多时候可能你想设计很多的代码结构,但是时间不允许
- 工作中有做过手机App项目,前端和android或ios程序员配合完成整个项目的开发,开发过程中与ios程序配合基本没什么问题,而andro
- Java xml出现错误 javax.xml.transform.TransformerException: java.lang.NullP
- 本文实例讲述了java实现word文档转pdf并添加水印的方法。分享给大家供大家参考,具体如下:前段时间,项目需要自动生成word文档,用W
- 各位亲们可以尝试以下代码:注:这里我就只有一个html标签对来说明问题了,首部之类的东西,自己添加。<html> &n
- IO流Java中IO流分为两种,字节流和字符流,顾名思义字节流就是按照字节来读取和写入的,字符刘是按照字符来存取的;常用的文件读取用的就是字
- 今天在码代码的时候突然想到这个问题,觉得有点困惑。在网上也翻阅不少帖子其中有一个帖子给了我一个思路,其实也是解释了基础概念。概念一:try
- SpringBoot 2.1.4 错误处理机制springboot的自动配置中帮我们配置了相关的错误处理组件,例如访问一个不存在的页面,就会
- 定义可理解为 适配广泛的类型,即参数化类型,可以把类型像方法的参数那样进行传递。// 以ArrayList为示例// 泛型T可以是任意类pu
- java控制台输出图书馆管理系统(只用java代码不用数据库和GUI,java入门的新手秒懂)在个项目中,我只用数组保存数据,和只用for循
- 本文实例讲述了java实现List中对象排序的方法。分享给大家供大家参考,具体如下:package com.test; import jav
- 前两天发现 idea 终于更新了2020.1版本,新增了好多的特性,这里不介绍,主要写一下中文插件的安装首先下载新版 安装包 https:/
- 1. 继承1. 子类继承了父类,获得父类的全部Field和方法。子类Student类继承父类,将可以获得父类的全部Field和方法publi
- Java语言是SUN(Stanford University Network,斯坦福大学网络公司)公司1995年推出的一门高级编程语言,起初
- Spring 配置文件报错:元素 "context:component-scan" 的前缀 "context&
- 作为开发人员,掌握开发环境下的调试技巧十分有必要。我们在编写java程序的过程中,经常会遇到各种莫名其妙的问题,为了检测程序是哪里出现问题,
- Spring Cloud Gateway使用Spring Cloud Gateway是一个基于Spring Boot 2.x和Spring&
- springboot项目启动慢的问题排查springboot项目,随着时间的推移,启动耗时逐步增加,从几分钟慢慢的达到30多分钟,有点恐怖!