java实现线程的两种方式
2024-10-02 06:01:19
要求:一个火车站,三个售票员卖出100张票
1.通过继承Thread类实现
实现思路:建立ThreadTest类继承Thread并建立三个线程卖100张票
public class ThreadTest extends Thread {
private int i = 100;
public void run() {
while(true){
if(i>0) {
System.out.println(Thread.currentThread().getName() + "正在售出第" + i-- + "张票");
}
}
} public static void main(String[] args){
ThreadTest th = new ThreadTest();
new Thread(th).start();
new Thread(th).start();
new Thread(th).start();
}
}
体会:三个线程之间无序卖票,且线程之间无干扰。
2.通过实现Runnable接口达到要求
实现思路:建立ThreadTest类实现Runnable接口并建立一个对象的三个线程卖100张票
public class ThreadTest implements Runnable {
private int i = 100;
public void run() {
while(true){
if(i>0) {
System.out.println(Thread.currentThread().getName() + "正在售出第" + i-- + "张票");
}
}
} public static void main(String[] args){
ThreadTest th = new ThreadTest();
new Thread(th).start();
new Thread(th).start();
new Thread(th).start();
}
}
个人体会:三个线程共同卖出100张票,线程之间无序执行,th就相当于一个火车站,然后三个售票员卖100张票
拓展:三个火车站共同卖出100张票
思路:建立三个ThreadTest类的对象当做三个火车站,每个火车站一个售票员,把票变为静态属性
public class ThreadTest extends Thread {
static int i = 100;
public void run() {
while(true){
if(i>0) {
System.out.println(Thread.currentThread().getName() + "正在售出第" + i-- + "张票");
}
}
} public static void main(String[] args){
ThreadTest th1 = new ThreadTest();
new Thread(th1).start();//一火车站一售票员
ThreadTest th2 = new ThreadTest();
new Thread(th2).start();
ThreadTest th3 = new ThreadTest();
new Thread(th3).start();
}
}
总结:一个ThreadTest类的对象就是一个火车站,一个进程就相当于一个售票员。。。
最新文章
- [AlwaysOn Availability Groups]AlwaysOn Ring Buffers
- C#实现快速排序
- Masonry 创建Button的简单使用
- c# 正则表达式 匹配中括号&;颜色过滤
- js 函数定义三种方式
- LeetCode Compare Version Numbers
- Adobe Flash CC 安装报错的解决办法
- 1、ViewModel类的构建和INoyifyPropertyChanged的应用
- 协同办公平台Worktile体验分享(转)
- 模拟美萍加密狗--Rockey2虚拟狗(三)
- 给table加边框的两种方法
- php 与redis 结合 使用predis
- NameError: name 'messagebox' is not defined 错误处理
- python交互的几种方式
- (实用)Linux下安装JDK和Eclipse
- Ucloud云主机无法yum安装处理办法
- 解决nodejs运行程序卡死之后,程序后台运行的问题
- iOS 折线图、柱状图的简单实现
- python操作mysql(pymysql + sqlalchemy)
- winform多线程调用控件