JAVA单线程和多线程的实现方式
1.java单线程的实现 一个任务一个人独立完成
public class SingletonThread {
    @SuppressWarnings("static-access")
    public static void main(String[] args) {
         Thread t =Thread.currentThread();
         t.setName("单例线程");
     //有1000条数据需要更新,由一个人来完成
         for(int i=0;i<1000;i++){
        try {
          System.out.println(t.getName()+"正在执行"+i);
                //t.sleep();  //线程休眠中
            } catch (InterruptedException e) {
                System.out.println("线程出现错误了!!");
            }
         }
    }
}
2.java多线程的实现 一个任务多个人来同时进行并完成
①继承Thread类,并重写run方法
public class ThreadImpl {
    public static void main(String[] args) {
     //这里也有1000条数据数据需要更新,就分3个人来进行完成
        Thread t1=new ThreadTest("t1", 300);
        Thread t2=new ThreadTest("t2", 300);
        Thread t3=new ThreadTest("t3", 400);
        t1.start();
        t2.start();
        t3.start();
    }
}
class ThreadTest extends Thread{
    private String name;
    private int ts;
    public ThreadTest(String name, int ts) {
        this.name = name;
        this.ts= ts;
    }
    public void run() {
        try {
            //sleep(ms);
       for(int i=0;i<=ts;i++){
          System.out.println(name+"正在执行"+i);
       }
        } catch (InterruptedException e) {
        System.out.println("线程运行中断异常");
        }
        System.out.println("名字叫"+name+"的线程开始休眠"+ms+"毫秒");
    }
}

②实现runnable接口,重写run方法
public class RunnableImpl {
    public static void main(String[] args) {
        RunnableTest r1=new RunnableTest();
        Thread t=new Thread(r1);
         t.start();
    }
}
class RunnableTest implements Runnable{
    @Override
    public void run() {
        // TODO Auto-generated method stub
    }
}

这是一个线程模拟的售票系统:
class MyThread implements Runnable{
    private int ticket=10;  //10张车票
    public void run(){
        for(int i=0;i<=20;i++){
            if(this.ticket>0){
                System.out.println(Thread.currentThread().getName()+"正在卖票:"+this.ticket--);
            }
        }
    }
}
public class ThreadTicket{
 
    public static void main(String[] args) {
        //资源共享
        MyThread mt=new MyThread();
        new Thread(mt, "1号窗口").start();
        new Thread(mt, "2号窗口").start();
        new Thread(mt, "3号窗口").start();
    }
}
【运行结果】:
1号窗口正在卖票:9
1号窗口正在卖票:7
2号窗口正在卖票:6
3号窗口正在卖票:5
2号窗口正在卖票:4
1号窗口正在卖票:3
1号窗口正在卖票:2
1号窗口正在卖票:1
3号窗口正在卖票:8
2号窗口正在卖票:10
JAVA单线程和多线程的实现方式的更多相关文章
- Java中的多线程的创建方式
		首先理清几个基本概念: 程序:为完成特定任务,用某种语言编写的一组指令的集合.即一段静态的代码(还没运行起来) 进程:是程序的一次执行过程,也就是说程序运行起来了,加载到了内存中,并占用了cpu的资源 ... 
- java中创建多线程两种方式以及实现接口的优点
		多线程创建方式有两种 创建线程的第一种方式.继承Thread类 1.继承Thread类 2.重写Thread类中的run方法--目的将自定义代码存储在run方法.让线程执行3.调用线程的start() ... 
- JAVA单线程以及java多线程的实现方式
		1.java单线程的实现 public class SingletonThread { @SuppressWarnings("static-access") public stat ... 
- java归并排序,单线程vs多线程
		一.什么是归并排序 归并排序又称合并排序,它是成功应用分治技术的一个完美例子.对于一个需要排序的数组A[0..n-1],归并排序把它一分为二:A[0..n/2-1]和A[n/2..n-1],并对每个子 ... 
- java 22 - 4 多线程的代码实现的方式1
		需求:我们要实现多线程的程序. 如何实现呢? 由于线程是依赖进程而存在的,所以我们应该先创建一个进程出来. 而进程是由系统创建的,所以我们应该去调用系统功能创建一个进程. Java是不能直接调用系统功 ... 
- Java学习笔记-多线程-创建线程的方式
		创建线程 创建线程的方式: 继承java.lang.Thread 实现java.lang.Runnable接口 所有的线程对象都是Thead及其子类的实例 每个线程完成一定的任务,其实就是一段顺序执行 ... 
- 牛客网Java刷题知识点之什么是进程、什么是线程、什么是多线程、多线程的好处和弊端、多线程的创建方式、JVM中的多线程解析、多线程运行图解
		不多说,直接上干货! 什么是进程? 正在进行中的程序(直译). 什么是线程? 就是进程中一个负责程序执行的控制单元(执行路径). 见 牛客网Java刷题知识点之进程和线程的区别 什么是多线程? 一个进 ... 
- Java并发和多线程2:3种方式实现数组求和
		本篇演示3个数组求和的例子. 例子1:单线程例子2:多线程,同步求和(如果没有计算完成,会阻塞)例子3:多线程,异步求和(先累加已经完成的计算结果) 例子1-代码 package cn.fansuni ... 
- Java IO学习笔记七:多路复用从单线程到多线程
		作者:Grey 原文地址:Java IO学习笔记七:多路复用从单线程到多线程 在前面提到的多路复用的服务端代码中, 我们在处理读数据的同时,也处理了写事件: public void readHandl ... 
随机推荐
- js正则删除字符串中的部分内容
			// 例如 let a = `(ID)444` a.replace(/\(ID\)/ig, '') // 结果 "444" 
- 【leetcode】966. Vowel Spellchecker
			题目如下: Given a wordlist, we want to implement a spellchecker that converts a query word into a correc ... 
- v-model  双向数据绑定以及修饰符
			<!--v-model 实现双向数据绑定 其中一个值发生改变,另一个值也将实时发生改变--> <div id="app09"> <h1>{{ m ... 
- 如何 修改jsp页面时间格式
			先导入文件 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> &l ... 
- SP7258 SUBLEX - Lexicographical Substring Search(后缀自动机)
			传送门 解题思路 首先建\(sam\),然后在拓扑序上\(dp\)一下,把每个点的路径数算出来,然后统计答案时就在自动机上\(dfs\)一下,仿照平衡树那样找第\(k\)小. 代码 #include& ... 
- Java标准输入/输出/错误流
			只要使用OutputStream对象就可使用System.out和System.err对象引用.只要可以使用InputStream对象就可以使用System.in对象. System类提供了三个静态设 ... 
- Ibatis  sql语句
			<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE sqlMap PUBLIC "-/ ... 
- 为Python终端提供持久性历史记录
			有没有办法告诉交互式Python shell在会话之间保留其执行命令的历史记录? 当会话正在运行时,在执行命令之后,我可以向上箭头并访问所述命令,我只是想知道是否有某种方法可以保存这些命令,直到下次我 ... 
- <爬虫>相关的知识
			1.概念.工具和HTTP 什么是爬虫 模拟客户端发送网络请求,获取响应,按照规则提取数据 爬虫的数据去哪了 展示到网页上(百度新闻,今日头条) 进行分析,从数据中寻找规律(指数网站:百度指数) 需要的 ... 
- 如何在react中实现一个table切换?
			废话不说,直接贴代码,供新手参考 <!DOCTYPE html> export default class TabComponent extends Component { constru ... 
