多线程 简单的实现案例

简介: package com;import java.io.IOException;import java.nio.CharBuffer;public class Demo04 { public static void main(String[] args) { ...
package com;

import java.io.IOException;
import java.nio.CharBuffer;

public class Demo04 {
        public static void main(String[] args) {
        /*    MyThread t1 = new MyThread();
            t1.setName("线程一");
            MyThread t2 = new MyThread();
            t2.setName("线程二");
            MyThread t3 = new MyThread();
            t3.setName("线程三");
            MyThread t4 = new MyThread();
            t4.setName("线程四");
            t1.start();
            t2.start();
            t3.start();
            t4.start();*/
            test02();
                    
        }
        
        
        
        
        public static  void test02(){
            MyThread02 thread02 = new MyThread02();
            Thread t1 = new Thread(thread02);
            t1.setName("线程一");
            Thread t2 = new Thread(thread02);
            t2.setName("线程二");
            Thread t3 = new Thread(thread02);
            t3.setName("线程三");
            Thread t4 = new Thread(thread02);
            t4.setName("线程四");
            t1.start();
            t2.start();
            t3.start();
            t4.start();
            
            
            
        }
}




/**
 * 实现多线程的一种方式,继承Thread类,因为java类只能单继承,当不能使用继承时。就使用下面的另一个方式
 * @author Administrator
 *
 */
class MyThread extends Thread{
    //模拟一个多线程的Demo
    //定一个票数为100;
    private static int sum=100;
    @Override
    public void run() {
                //采用同步代码块实现线程安全
                while (true) {                
                    synchronized (MyThread02.class) {
                        if(sum<=0){
                            return;
                        }
                        sum--;
                        System.out.println(Thread.currentThread().getName()+"售出一张票;还剩余"+sum+"张");
                    }    
                    
                }
            }
        

    
}
/**
 * 实现多线程的第二种方式;实现Runnable接口
 * 
 * @author Administrator
 *
 */
class MyThread02 implements Runnable{
    //模拟一个多线程的Demo
    //定一个票数为100;
    private static int sum=100;
        @Override
        public void run() {
            //采用同步代码块实现线程安全
            while (true) {
                
                synchronized (MyThread02.class) {
                    if(sum<=0){
                        return;
                    }
                    sum--;
                    System.out.println(Thread.currentThread().getName()+"售出一张票;还剩余"+sum+"张");
                }    
                
            }
        }    
    
}

 全部都写在一个类里面了;直接新建一个类;复制,粘贴,导包就可以了

目录
相关文章
|
7月前
多线程案例-定时器(附完整代码)
多线程案例-定时器(附完整代码)
303 0
|
2月前
|
安全 Java
Java多线程通信新解:本文通过生产者-消费者模型案例,深入解析wait()、notify()、notifyAll()方法的实用技巧
【10月更文挑战第20天】Java多线程通信新解:本文通过生产者-消费者模型案例,深入解析wait()、notify()、notifyAll()方法的实用技巧,包括避免在循环外调用wait()、优先使用notifyAll()、确保线程安全及处理InterruptedException等,帮助读者更好地掌握这些方法的应用。
22 1
|
7月前
|
设计模式 监控 Java
Java多线程基础-11:工厂模式及代码案例之线程池(一)
本文介绍了Java并发框架中的线程池工具,特别是`java.util.concurrent`包中的`Executors`和`ThreadPoolExecutor`类。线程池通过预先创建并管理一组线程,可以提高多线程任务的效率和响应速度,减少线程创建和销毁的开销。
228 2
|
7月前
|
安全 Java
Java多线程基础-10:代码案例之定时器(一)
`Timer` 是 Java 中的一个定时器类,用于在指定延迟后执行指定的任务。它常用于实现定时任务,例如在网络通信中设置超时或定期清理数据。`Timer` 的核心方法是 `schedule()`,它可以安排任务在延迟一段时间后执行。`
144 1
|
7月前
|
Java Python 开发者
Python 学习之路 01基础入门---【Python安装,Python程序基本组成】
线程池详解与异步任务编排使用案例-xian-cheng-chi-xiang-jie-yu-yi-bu-ren-wu-bian-pai-shi-yong-an-li
510 3
Python 学习之路 01基础入门---【Python安装,Python程序基本组成】
|
7月前
|
SQL Dubbo Java
案例分析|线程池相关故障梳理&总结
本文作者梳理和分享了线程池类的故障,分别从故障视角和技术视角两个角度来分析总结,故障视角可以看到现象和教训,而技术视角可以透过现象看到本质更进一步可以看看如何避免。
84768 136
案例分析|线程池相关故障梳理&总结
|
3月前
|
安全 Java 调度
python3多线程实战(python3经典编程案例)
该文章提供了Python3中多线程的应用实例,展示了如何利用Python的threading模块来创建和管理线程,以实现并发执行任务。
57 0
|
7月前
|
Python
Python学习之路 02 之分支结构
Python学习之路 02 之分支结构
493 0
Python学习之路 02 之分支结构
|
4月前
|
消息中间件 安全 Kafka
"深入实践Kafka多线程Consumer:案例分析、实现方式、优缺点及高效数据处理策略"
【8月更文挑战第10天】Apache Kafka是一款高性能的分布式流处理平台,以高吞吐量和可扩展性著称。为提升数据处理效率,常采用多线程消费Kafka数据。本文通过电商订单系统的案例,探讨了多线程Consumer的实现方法及其利弊,并提供示例代码。案例展示了如何通过并行处理加快订单数据的处理速度,确保数据正确性和顺序性的同时最大化资源利用。多线程Consumer有两种主要模式:每线程一个实例和单实例多worker线程。前者简单易行但资源消耗较大;后者虽能解耦消息获取与处理,却增加了系统复杂度。通过合理设计,多线程Consumer能够有效支持高并发数据处理需求。
189 4
|
7月前
|
Java
线程池详解与异步任务编排使用案例-xian-cheng-chi-xiang-jie-yu-yi-bu-ren-wu-bian-pai-shi-yong-an-li
线程池详解与异步任务编排使用案例-xian-cheng-chi-xiang-jie-yu-yi-bu-ren-wu-bian-pai-shi-yong-an-li
87 0