Java多线程
时间:2019-08-30
本文章向大家介绍Java多线程,主要包括Java多线程使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
题目描述:
有三个线程,要求分别在控制台输入后进行字符串的拼接"_A","_B","_C"。
条件是:
1.线程能顺序执行,线程1执行出“_A”,线程2执行“_B”,线程3执行“_C”;
2.三个线程同时启动。
代码如下:
import java.util.Scanner; import java.util.concurrent.CountDownLatch; public class Main { private int i = 0; private static StringBuffer sb = new StringBuffer(); private static CountDownLatch cd = new CountDownLatch(3); public static void main(String[] args) throws InterruptedException { Scanner in = new Scanner(System.in); String str = in.nextLine(); sb.append(str); Thread pre = new Thread(new Runnable() { @Override public void run() { sb.append(Thread.currentThread().getName()); cd.countDown(); } },"_A"); pre.start(); for(int i = 1;i < 3;i++) { Thread thread; if(i == 1) { thread = new Thread(new Thr(pre),"_B"); }else { thread = new Thread(new Thr(pre),"_C"); } thread.start(); pre = thread; } cd.await(); System.out.println(sb.toString()); } static class Thr implements Runnable{ private Thread thread; public Thr(Thread thread) { this.thread = thread; } @Override public void run() { try { thread.join(); }catch(InterruptedException e) { } sb.append(Thread.currentThread().getName()); cd.countDown(); } } }
若是只是顺序打印ABC的话:
package com.ymm.thread; public class JionMain { public static void main(String[] args){ ThreadA threadA = new ThreadA(); ThreadB threadB = new ThreadB(threadA); ThreadC threadC = new ThreadC(threadB); threadA.start(); threadB.start(); threadC.start(); } } class ThreadA extends Thread{ @Override public void run(){ System.out.println("A"); } } class ThreadB extends Thread { private ThreadA threadA; public ThreadB(ThreadA threadA) { this.threadA = threadA; } @Override public void run() { try { threadA.join(); } catch (InterruptedException e) { } System.out.println("B"); } } class ThreadC extends Thread { private ThreadB threadB; public ThreadC(ThreadB threadB) { this.threadB = threadB; } @Override public void run() { try { threadB.join(); } catch (InterruptedException e) { } System.out.println("C"); } }
原文地址:https://www.cnblogs.com/youdiaodaxue16/p/11436178.html
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Android仿qq侧滑菜单
- Vue3对于一个前端来讲意味着什么?
- 这就是你日日夜夜想要的docker!!!---------Dockerfile构建nginx、Tomcat、MySQL镜像
- 深入揭秘前端路由本质,手写 mini-router
- 这就是你日日夜夜想要的docker!!!---------Docker四种网络模式解析
- C语言队列的基本操作
- 10款好用到爆的Vim插件,你知道几个?
- 这就是你日日夜夜想要的docker!!!---------Docker Compose容器编排理论+实操
- 模式检验库Meteva笔记:加载本地观测数据
- Go by Example 中文版: SHA1 哈希
- C语言中缀表达式转后缀表达式
- C语言逆波兰表达式计算(后缀表达式计算器)
- SpringBoot+Druid+Mybatis配置多数据源
- C语言共享栈
- C语言二叉树的基本操作