Java那些事之多线程
Java中的多线程经常被使用,而且功能还是比较强大的。下面来简单介绍一下。
本人经常使用的多线程方式是去实现Runnable的run方法,然后在外面用start方法进行调用。这样感觉思路更清晰一些。
好了,上代码,一看就明白了。
比如我要设计一个线程A.
代码如下:
{
/*
* (non-Javadoc)
* @see java.lang.Runnable#run()
* 启动线程
*/
public void run() {
System.out.println("A started");
}
}
OK,很简单吧。A线程定义完毕。
下面进行A线程启动的调用
Thread thread_a = new Thread(a);
thread_a.start();
既然是多线程,我们看看下个线程B。为了实现线程的切换,我们假设B要等到A完成之后再开始。看看怎么写吧
首先还是定义
{
private ThreadA threada;
public ThreadB(ThreadA a)
{
this.threada = a ;
}
/*
* (non-Javadoc)
* @see java.lang.Runnable#run()
* 启动线程
*/
public void run() {
synchronized(threada ) {
try {
a.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println("B started");
}
}
//这是唯一的区别
Thread thread_b = new Thread(a);
thread_b.start();
这样一来,线程B也大功告成了。
下面是关键的地方,注意到B线程开始在wait(),什么时候执行呢?
因此我们需要在一个地方去唤醒B线程,考虑到我们假设的场景是A执行之后去执行B线程,那么A线程后面需要加一下唤醒。
{
/*
* (non-Javadoc)
* @see java.lang.Runnable#run()
* 启动线程
*/
public void run() {
System.out.println("A started");
synchronized(this) {
notifyAll();
}
}
这样一来,就可以实现我们的效果了。
转载于:https://www.cnblogs.com/luchen927/archive/2011/07/08/2094108.html
Java那些事之多线程相关推荐
- Java基础篇:多线程
文章目录 1.概念:程序.进程.线程 2.线程的创建和使用 3.线程的生命周期 4.线程的同步 5.线程的通信 6.JDK5.0新增线程创建方法 1.概念:程序.进程.线程 程序(program)是为 ...
- java线程future_Java中多线程对运行结果怎么利用future获取
Java中多线程对运行结果怎么利用future获取 发布时间:2020-12-07 17:11:08 来源:亿速云 阅读:124 作者:Leah Java中多线程对运行结果怎么利用future获取?针 ...
- Java 并发编程解析 | 如何正确理解Java领域中的多线程模型,主要用来解决什么问题?
苍穹之边,浩瀚之挚,眰恦之美: 悟心悟性,善始善终,惟善惟道! -- 朝槿<朝槿兮年说> 写在开头 我国宋代禅宗大师青原行思在<三重境界>中有这样一句话:" 参禅之初 ...
- Java第十一课——多线程实现飞机大战
Java第十一课--多线程实现飞机大战 一.补充讲解一下线程 在第九课的基础上补充两点: 1.启动线程使用start()方法而不直接使用rin()方法,因为线程是一直重复执行的,调用run方法只会执行 ...
- 【躲不过的Java “锁事”】一文扫除对Java各种锁的困扰!
简介 锁是Java中快捷理解多线程的一条捷径,为我们开发多线程提供理论支持,想成为一个合格的工程师,Java中的锁是必定躲不过的一个知识点,并且内容繁多,本文点到为止,浅谈Java中的各种锁,带您理解 ...
- JUC-不得不说的Java“锁”事
不得不说的Java"锁"事 前言 一synchronized 1. 变量安全性 2.多个对象多个锁 3.synchronized方法与锁对象 4.脏读 5.synchronized ...
- java callable 详解_详解Java Callable接口实现多线程的方式
在Java 1.5以前,创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口.无论我们以怎样的形式实现多线程,都需要调用Thread类中的start方法去向操作系统请求 ...
- java线程钥匙_Java多线程并发编程/锁的理解
一.前言 最近项目遇到多线程并发的情景(并发抢单&恢复库存并行),代码在正常情况下运行没有什么问题,在高并发压测下会出现:库存超发/总库存与sku库存对不上等各种问题. 在运用了 限流/加锁等 ...
- Java高级特性增强-多线程
请戳GitHub原文: https://github.com/wangzhiwub... 大数据成神之路系列: 请戳GitHub原文: https://github.com/wangzhiwub... ...
最新文章
- Hungarian method 匈牙利算法 解决指派问题
- 关于DMA,TCM(ITCM和DTCM)和Cache的理解
- 基于数据挖掘的旅游推荐APP(四):“我的”模块
- 自定义线程池-参数设计分析
- sql range 范围内查询
- Spring Security配置错误
- Java8中的外观(JavaFX8)
- lstm需要优化的参数_LSTM的物理结构和一些细节
- png-CRC32校验
- 追踪多省网络故障:域名解析瘫痪后的连锁反应
- 计算机中信息表示方法,计算机中的信息表示方法二进制
- docker 安装MySQL远程连接
- 把博客园自己博客皮肤改了下
- Axure RP 9 Beta 开放下载(更新激活密钥和汉化包)
- 离散数学期末复习笔记【精华版】
- 网站架构资料收集整理
- python url加密解密_python解密百度加密链接的脚本
- 显卡内存管理机制及驱动实现(Intel gma500为例)
- ios射击类游戏简单代码射击
- 复旦大学附属肿瘤医院请“牛顿”打造智慧医疗
热门文章
- 【深度学习】梯度和方向导数概念解析(代码基于Pytorch实现)
- python【力扣LeetCode算法题库】69-x 的平方根
- php手机电脑,php用手机关计算机(电脑)
- 如何判断链表是否有环_如何快速判断气门油封是否漏油?
- 浏览器时间久了重新登录_以登录为例讲解什么是全面的测试设计
- php修改http header,php header函数的常用http头设置
- 怎么把mysql转换mssql_MySQL如何转SQL server
- css中vertical-align生效
- linux内核编译 menuconfig详解,Linux内核编译menuconfig介绍
- 网络广告推广浅析网站的外链究竟要如何优化效果才会更好呢?