- 浏览: 77425 次
- 性别:
- 来自: 深圳
文章分类
最新评论
class TWindow implements Runnable{ private int tickNum = 100; public void run(){ while(true){ if(tickNum >0){ System.out.println(Thread.currentThread().getName()" sale: "+ tickNum--); } } } } class Ticket{ public static void main(String[] args){ TWindow t = new TWindow();//这行代码未创建线程 Thread t1 = new thread();//创建一个线程 Thread t2 = new thread();//创建一个线程 Thread t3 = new thread();//创建一个线程 Thread t4 = new thread();//创建一个线程 t1.start(); t2.start(); t3.start(); t4.start(); } }
该代码运行后,没有结果。因为虽然四个线程已经开始运行,但是它们调用的是Thread类中的run(),而该run()并没有任何内容。
问题来了,TWindow中的run()方法为卖票动作,要如何调用它呢。
/* 需求:简单的买票程序 多个窗口卖票 创建线程的第二种方式:实现Runnable接口 步骤: 1,定义类实现Runnable接口 2,覆盖Runnable接口中的run方法 3,通过Thread类建立线程对象 4,将Runnable接口的子类对象作为实际参数传递给Thread类的构造函数 为什么要将Runnable接口的子类对象作为实际参数传递给Thread的构造函数? 因为自定义run方法所属对象是Runnable接口的子类对象。 所以要让线程去执行指定对象的run方法,就必须明确该run方法所属对象。 5,调用Thread类的start方法,开启线程并调用Runnable接口子类的run方法 实现方式和继承方式有什么区别? 实现方式好处:避免了单继承的局限性 在定义线程时,建议使用实现方式。 继承Thread:线程代码存放在Thread子类run方法中 实现Runnable:线程代码存放在接口子类的run方法中 */ class TWindow implements Runnable{ private int tickNum = 100; public void run(){ while(true){ if(tickNum >0){ System.out.println(Thread.currentThread().getName()" sale: "+ tickNum--); } } } } class Ticket{ public static void main(String[] args){ TWindow t = new TWindow();//这行代码未创建线程 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(); } }
发表评论
-
151多线程(优先级&yield方法)
2015-10-28 11:16 694/* 养成习惯:数据共享用静态 */ class Dem ... -
150_多线程(Join方法)
2015-10-27 18:31 610/* join: 当A线程执行到了B线程的join方法 ... -
114_面向对象(多异常处理)_黑马程序员_Java基础视频
2015-10-25 23:27 695/* 对多异常的处理 1.生命异常时,建议声明更为具体的异 ... -
113_面向对象(异常声明throws)_黑马程序员_Java基础视频
2015-10-25 23:26 481/* 异常:就是程序在运行时出现不正常情况 异常由来:问题 ... -
112_面向对象(异常try-catch)
2015-10-25 23:25 733/* 异常:就是程序在运行时出现不正常情况 异常由来:问题 ... -
148_多线程(停止线程)
2015-10-25 23:16 581/* stop方法已经过时。 如何停止线程? 只有一 ... -
147_多线程(线程间通信-生产者消费者JDK5.0升级版)
2015-10-21 23:33 751/*JDK1.5及以上提供了多线程升级解决方案。 将同步Sy ... -
146_多线程(线程间通信-生产者消费者)
2015-10-20 23:35 627一个生产者一个消费者 ... -
144_多线程(线程间通信-等待唤醒机制)
2015-10-20 18:35 721class Res{ String name; Str ... -
142_多线程-线程间通信
2015-10-20 16:18 703/* 线程间通讯: 其实就是多线程在操作同一个资源。 但 ... -
141多线程-死锁
2015-10-20 14:45 694/* 死锁: 同步中嵌套同步 */ class T ... -
140_多线程(多线程-单例设计模式-懒汉式)
2015-10-19 11:45 689/* 单例设计模式 饿汉式 class Single ... -
138_多线程(多线程-同步函数的锁是this)
2015-10-15 14:48 848/* 同步函数用的是哪一个锁呢? 函数需要被对象调用。那么 ... -
137_多线程(多线程-同步函数)
2015-10-13 23:25 599/* 需求:银行有一个金库。 有两个储户分别存300元 ... -
135_多线程(多线程的安全问题)
2015-10-13 18:07 610class TWindow implements Runnab ... -
133_多线程(售票的例子)
2015-10-09 23:48 648/* 需求:简单的买票程序 多个窗口卖票 */ c ... -
132_多线程(获取线程对象以及名称)
2015-10-09 23:30 1218/* 练习:创建两个线程,和主线程交替运行 线程都有自 ... -
多线程-继承Thread类
2015-10-09 00:26 1562/* 进程:是一个正在执行中的程序 每一个进程执行都有一个 ... -
包的应用
2015-10-08 23:28 1665package pack; class PackageD ... -
异常总结
2015-10-05 20:07 575异常是什么? 是对问题的描述,将问题进行对象的封装。 ...
相关推荐
基于JAVA的多线程实现方法-实现Runnable接口 将需要实现多线程的类声明为实现Runnable接口的类,实现run()方法,并将线程体放在该方法里。
本篇将深入探讨如何通过实现`Runnable`接口来创建多线程,以及如何使用`Thread`类的构造方法。 首先,我们需要了解`Runnable`接口。`Runnable`接口在`java.lang`包中定义,它只有一个抽象方法`run()`。任何实现`...
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
本文将详细讲解如何通过实现`Runnable`接口创建多线程,以及这种方式相较于继承`Thread`类的优势。 一、实现Runnable接口创建多线程 1. **步骤** 当一个类需要继承其他类而不能直接继承`Thread`类时,可以选择...
"Thread 线程类实现 Runnable 接口" Thread 线程类是 Java 中 Thread 和 Runnable 接口的实现,它提供了线程的基本操作和管理。...开发者可以使用 Thread 类来创建和管理线程,以实现多线程编程。
声明自定义线程类实现Runnable接口实现奇数/偶数序列线程并发执行。
在Java中,有两种主要的方法来创建线程:通过继承`Thread`类和实现`Runnable`接口。本篇文章将深入探讨如何使用`Runnable`接口创建线程,并与`Thread`类创建线程的方式进行比较。 首先,我们来看`Runnable`接口。`...
在Java中,实现多线程的两种主要方式分别是:**通过继承`Thread`类** 和 **实现`Runnable`接口**。下面将详细介绍这两种方式,并提供相应的示例程序。 #### 一、通过继承`Thread`类实现多线程 在Java中,可以通过...
理解Java的Thread类、Runnable接口以及同步机制(如synchronized关键字、Lock接口、Semaphore等)对于解决多线程问题至关重要。 3. 线程竞争资源: 当多个线程尝试同时修改同一资源时,就会发生资源竞争。在JDBC中...
本文将详细介绍Java多线程的基本概念、线程的生命期、线程的状态转换、线程调度原则以及如何实现线程的两种常见方式。 #### 二、线程的相关概念 **1. 进程与线程的区别** - **进程**:是一个正在执行的程序实例,...
- **提高代码的复用性**:Runnable对象可以被多个线程共享,从而实现多线程对同一资源的并发访问。 - **更好的封装性**:Runnable接口将线程操作与业务逻辑分离,使得代码结构更加清晰,更符合面向对象的设计原则。...
一个简单的多线程代码示例,Java实现,用于实现同一时刻,只允许一个线程调用执行的代码块或类,即synchronized的如何使用(多线程实现),实现 Runnable
线程的创建可以通过继承Thread类或实现Runnable接口,然后通过start()方法启动。线程的生命周期包括新建、就绪、运行、阻塞和终止五个状态。 其次,书中会详细介绍线程同步机制。这是避免多线程环境下数据不一致的...
这个类用于理解多线程的执行过程是CPU在某时刻执行A线程、下一时刻执行B线程,交替执行的一个过程。 起新线程需要new一个Thread对象,将实现Runnable接口的类作为Thread构造器参数。这样才能实现起新线程。 输出效果...
- **创建线程**:Java提供了两种方式创建线程——通过实现Runnable接口或继承Thread类。前者更便于实现多继承,后者则简化了线程的创建过程。 2. **线程状态** - **五种线程状态**:新建、可运行、运行、阻塞和...
使用Runnable接口创建线程有很多优点: * 可以使代码变得更简洁、更易读。 * 可以使线程之间的通信变得更方便。 * 可以使程序的可维护性和可扩展性变得更好。 Runnable接口的应用场景 Runnable接口的应用场景非常...
1. 写两个线程,一个线程打印1-52,另一个线程打印字母A-Z。打印顺序为12A34B56C……5152Z。 学习线程之间的通信协调关系。 2. 使用 runnable 接口实现按两... 使用继承Thread类方式和实现Runnable接口两种方式实现。
通过实现Runnable接口或继承Thread类,我们可以创建自己的线程任务。 其次,书中会详细讲解线程的生命周期,包括新建、就绪、运行、阻塞和终止五种状态,以及如何通过start()、run()、join()、sleep()、yield()、...
实现Runnable接口需要创建一个Thread类的实例,并将Runnable对象传递给Thread的构造函数。然后,调用Thread的start()方法来启动线程。 下面是一个实现Runnable接口的示例代码: ```java public static void main...
总结来说,Java中的`Thread`类和`Runnable`接口提供了两种创建多线程的方式,它们都可用于实现阶乘计算。理解这些基础概念是进行并发编程的关键,也是提升程序效率的重要手段。在实际应用中,应根据项目需求和最佳...