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单线程和多线程的实现方式的更多相关文章

  1. Java中的多线程的创建方式

    首先理清几个基本概念: 程序:为完成特定任务,用某种语言编写的一组指令的集合.即一段静态的代码(还没运行起来) 进程:是程序的一次执行过程,也就是说程序运行起来了,加载到了内存中,并占用了cpu的资源 ...

  2. java中创建多线程两种方式以及实现接口的优点

    多线程创建方式有两种 创建线程的第一种方式.继承Thread类 1.继承Thread类 2.重写Thread类中的run方法--目的将自定义代码存储在run方法.让线程执行3.调用线程的start() ...

  3. JAVA单线程以及java多线程的实现方式

    1.java单线程的实现 public class SingletonThread { @SuppressWarnings("static-access") public stat ...

  4. java归并排序,单线程vs多线程

    一.什么是归并排序 归并排序又称合并排序,它是成功应用分治技术的一个完美例子.对于一个需要排序的数组A[0..n-1],归并排序把它一分为二:A[0..n/2-1]和A[n/2..n-1],并对每个子 ...

  5. java 22 - 4 多线程的代码实现的方式1

    需求:我们要实现多线程的程序. 如何实现呢? 由于线程是依赖进程而存在的,所以我们应该先创建一个进程出来. 而进程是由系统创建的,所以我们应该去调用系统功能创建一个进程. Java是不能直接调用系统功 ...

  6. Java学习笔记-多线程-创建线程的方式

    创建线程 创建线程的方式: 继承java.lang.Thread 实现java.lang.Runnable接口 所有的线程对象都是Thead及其子类的实例 每个线程完成一定的任务,其实就是一段顺序执行 ...

  7. 牛客网Java刷题知识点之什么是进程、什么是线程、什么是多线程、多线程的好处和弊端、多线程的创建方式、JVM中的多线程解析、多线程运行图解

    不多说,直接上干货! 什么是进程? 正在进行中的程序(直译). 什么是线程? 就是进程中一个负责程序执行的控制单元(执行路径). 见 牛客网Java刷题知识点之进程和线程的区别 什么是多线程? 一个进 ...

  8. Java并发和多线程2:3种方式实现数组求和

    本篇演示3个数组求和的例子. 例子1:单线程例子2:多线程,同步求和(如果没有计算完成,会阻塞)例子3:多线程,异步求和(先累加已经完成的计算结果) 例子1-代码 package cn.fansuni ...

  9. Java IO学习笔记七:多路复用从单线程到多线程

    作者:Grey 原文地址:Java IO学习笔记七:多路复用从单线程到多线程 在前面提到的多路复用的服务端代码中, 我们在处理读数据的同时,也处理了写事件: public void readHandl ...

随机推荐

  1. js正则删除字符串中的部分内容

    // 例如 let a = `(ID)444` a.replace(/\(ID\)/ig, '') // 结果 "444"

  2. 【leetcode】966. Vowel Spellchecker

    题目如下: Given a wordlist, we want to implement a spellchecker that converts a query word into a correc ...

  3. v-model 双向数据绑定以及修饰符

    <!--v-model 实现双向数据绑定 其中一个值发生改变,另一个值也将实时发生改变--> <div id="app09"> <h1>{{ m ...

  4. 如何 修改jsp页面时间格式

    先导入文件 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> &l ...

  5. SP7258 SUBLEX - Lexicographical Substring Search(后缀自动机)

    传送门 解题思路 首先建\(sam\),然后在拓扑序上\(dp\)一下,把每个点的路径数算出来,然后统计答案时就在自动机上\(dfs\)一下,仿照平衡树那样找第\(k\)小. 代码 #include& ...

  6. Java标准输入/输出/错误流

    只要使用OutputStream对象就可使用System.out和System.err对象引用.只要可以使用InputStream对象就可以使用System.in对象. System类提供了三个静态设 ...

  7. Ibatis sql语句

    <?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE sqlMap PUBLIC "-/ ...

  8. 为Python终端提供持久性历史记录

    有没有办法告诉交互式Python shell在会话之间保留其执行命令的历史记录? 当会话正在运行时,在执行命令之后,我可以向上箭头并访问所述命令,我只是想知道是否有某种方法可以保存这些命令,直到下次我 ...

  9. <爬虫>相关的知识

    1.概念.工具和HTTP 什么是爬虫 模拟客户端发送网络请求,获取响应,按照规则提取数据 爬虫的数据去哪了 展示到网页上(百度新闻,今日头条) 进行分析,从数据中寻找规律(指数网站:百度指数) 需要的 ...

  10. 如何在react中实现一个table切换?

    废话不说,直接贴代码,供新手参考 <!DOCTYPE html> export default class TabComponent extends Component { constru ...