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 ...
随机推荐
- C# Copy一个文件到另一个文件夹下
public static void CopyToFile() { //源文件路径 string sourceName = @"D:\Source\Test.txt"; //目标路 ...
- 游戏game
1.log4cxx 日志 2.protobuf 数据交互(类似json 3.boost.asio 网络库 4.boost.python 脚本支持 5.语法树 + c++处理excel资源
- jupyter|浏览器启动问题|“ImportError: DLL load failed: 找不到指定的模块”sqlite3
问题: 1.安装好Anconda3后,开始——>打开jupyter notebook时 默认浏览器无法启动 2.开始打开——>anaconda prompt 输入jupyter noteb ...
- Kubernetes重大漏洞?阿里云已第一时间全面修复
近日,Kubernetes社区发现安全漏洞 CVE-2018-1002105,阿里云容器服务已在第一时间完成全面修复,敬请广大用户登录阿里云控制台升级Kubernetes版本. 目前Kubernete ...
- jquery基础知识实例(一)
轮滑 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.o ...
- delphi INI文件
INI 文件读写 filecreate('路径加文件名')://创建一个文件. (1) INI文件的结构: ;这是关于INI文件的注释部分 [节点] 关键字=值 ... INI文件允许有多个节点,每个 ...
- Sqli labs系列-less-1 详细篇
要说 SQL 注入学习,网上众多的靶场,就属 Sqli labs 这个系列挺不错的,关卡达到60多关了,我自己也就打了不几关,一个挺不错的练习SQL注入的源码. 我一开始就准备等我一些原理篇总结完了, ...
- Java-Class-@I:io.swagger.annotation.Api
ylbtech-Java-Class-@I:io.swagger.annotation.Api 1.返回顶部 2.返回顶部 1. package com.ylbtech.api.controlle ...
- CTF杂项思路工具分享————2019/5/30
分享碰到的一些奇奇怪怪的杂项解题方式: 键盘坐标密码: 题目给出一段字符串:11 21 31 18 27 33 34 对照上面的表格,就可以很清晰的看出来密文为:QAZIJCV 猪圈码: 题目为: 一 ...
- Django框架(七)—— 模板层:变量、过滤器、标签、自定义标签和过滤器
目录 模板层:变量.过滤器.标签.自定义标签和过滤器 一.模板层变量 1.语法 2.使用 二.模板层之过滤器 1.语法 2.常用过滤器 3.其他过滤器 三.模板值标签 1.for标签 2.if标签 3 ...