java多线程之述解
说起线程 就不得不提进程 他们之间的关系很紧密
进程:内存中运行的应用程序 每个进程都有自己的一块内存空间 而线程是进程中的一个执行单元 一个进程中可以有多个线程 多线程的好处就是可以并发操作程序 将cpu资源利用率最大化 就像我们生活中一样 当我们在一个视屏网站下电影的时候 我们可以去做一些其他的时间 不需要一直等着电影下完再去做不会耗费多余的时间 这就是多线程的好处
如何实现多线程呢
1.继承Thread类 然后重写run方法
2.实现Runnable接口实现重写·
|
|
特点
|
|
继承thread类
|
只适用于单继承 编写简单 可以直接操作
|
|
实现runnable接口
|
可以实现多继承
|
线程的状态
1.新建状态
线程在被创建后就进入了新建状态 例如Thread thread=newThread();
2.就绪状态(也称为可执行转态)
package com.newroad.thread.test;
//账户类
public class Account {
private double balance;
private Object lock=new Object();
public Account(double balance) {
super();
this.balance = balance;
}
public void withdrawMoney(double money) {
String name=Thread.currentThread().getName();
System.out.println(name+"取款前账户余额为:"+balance);
if (balance>=money) {
balance=balance-money;
System.out.println(name+"取款金额为:"+money +"取款后,余额为:"+balance);
}else {
System.out.println(name+"余额不足,账户余额为:"+balance+"取款金额为;"+money);
} } } //线程类
package com.newroad.thread.test;
public class PersonThread extends Thread {
private Account account;
private double drawbalance;
public PersonThread(Account account, double drawbalance) {
super();
this.account = account;
this.drawbalance = drawbalance;
} @Override
public void run() {
account.withdrawMoney(drawbalance); } } //这是测试类
package com.newroad.thread.test; public class Test {
public static void main(String[] args) {
Account account=new Account(4000);
PersonThread p=new PersonThread(account, 2400);
PersonThread p1=new PersonThread(account, 1000);
PersonThread p2=new PersonThread(account, 600);
p.setName("张三");
p1.setName("张三媳妇");
p2.setName("张三爸");
p.start();
p1.start();
p2.start();
}
}

package com.newroad.thread.test;
public class Account {
private double balance;
private Object lock = new Object();
public Account(double balance) {
super();
this.balance = balance;
}
public void withdrawMoney(double money) {
String name = Thread.currentThread().getName();
synchronized (this) {
System.out.println(name + "取款前账户余额为:" + balance);
if (this.balance >= money) {
balance = balance - money;
System.out.println(name + "取款金额为:" + money + "取款后,余额为:" + balance);
} else {
System.out.println(name + "余额不足,账户余额为:" + balance + "取款金额为;" + money);
}
}
}
}
这时我们就可以发现就没问题了

java多线程之述解的更多相关文章
- Java多线程编程详解
转自:http://programming.iteye.com/blog/158568 线程的同步 由于同一进程的多个线程共享同一片存储空间,在带来方便的同时,也带来了访问冲突这个严重的问题.Ja ...
- Java多线程超级详解(只看这篇就够了)
多线程能够提升程序性能,也属于高薪必能核心技术栈,本篇会全面详解Java多线程.@mikechen 主要包含如下几点: 基本概念 很多人都对其中的一些概念不够明确,如同步.并发等等,让我们先建立一个数 ...
- JAVA多线程synchronized详解
Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码. 当两个并发线程访问同一个对象object中的这个synchronized(this)同 ...
- Java多线程基础详解
基础概念进程进程是操作系统结构的基础:是一次程序的执行:是一个程序及其数据在处理机上顺序执行时所发生的活动.操作系统中,几乎所有运行中的任务对应一条进程(Process).一个程序进入内存运行,即变成 ...
- 【多线程】java多线程Completablefuture 详解【在spring cloud微服务之间调用,防止接口超时的应用】【未完成】
参考地址:https://www.jianshu.com/p/6f3ee90ab7d3 示例: public static void main(String[] args) throws Interr ...
- Java多线程详解(二)
评论区留下邮箱可获得<Java多线程设计模式详解> 转载请指明来源 1)后台线程 后台线程是为其他线程服务的一种线程,像JVM的垃圾回收线程就是一种后台线程.后台线程总是等到非后台线程死亡 ...
- Java多线程——多线程方法详解
本系列文章是Java多线程的详解介绍,对多线程还不熟悉的同学可以先去看一下我的这篇博客Java基础系列3:多线程超详细总结,这篇博客从宏观层面介绍了多线程的整体概况,接下来的几篇文章是对多线程的深入剖 ...
- Java——多线程之方法详解
Java多线程系列文章是Java多线程的详解介绍,对多线程还不熟悉的同学可以先去看一下我的这篇博客Java基础系列3:多线程超详细总结,这篇博客从宏观层面介绍了多线程的整体概况,接下来的几篇文章是对多 ...
- Java多线程——对象及变量的并发访问
Java多线系列文章是Java多线程的详解介绍,对多线程还不熟悉的同学可以先去看一下我的这篇博客Java基础系列3:多线程超详细总结,这篇博客从宏观层面介绍了多线程的整体概况,接下来的几篇文章是对多线 ...
随机推荐
- wk_06.md
IO与文件操作 文件内建函数open 内建函数open提供了初始化输入/输出(I/O)操作的通用接口.open()内建函数成功打开文件后会返回一个文件对象.open函数的语法如下: open(file ...
- 【洛谷】【lca+结论】P3398 仓鼠找sugar
[题目描述:] 小仓鼠的和他的基(mei)友(zi)sugar住在地下洞穴中,每个节点的编号为1~n.地下洞穴是一个树形结构.这一天小仓鼠打算从从他的卧室(a)到餐厅(b),而他的基友同时要从他的卧室 ...
- 【转】Android系统中的.apk文件和dex文件
1. *.apk文件 APK是Android Package的缩写,即Android安装包.通过将APK文件直接传到Android模拟器或Android手机中执行即可安装. 使用Android打包工具 ...
- kubernetes 认证授权
每个Kubernetes集群都有一个集群根证书颁发机构(CA). 集群中的组件通常使用CA来验证API server的证书,由API服务器验证kubelet客户端证书等.为了支持这一点,CA证书包被分 ...
- 【JavaScript】赛码网前端笔试本地环境搭建
参考:https://hoofoo.me/article/2017-04-11/%E8%B5%9B%E7%A0%81%E7%BD%91%E5%89%8D%E7%AB%AF%E7%AC%94%E8%AF ...
- Jsp实现在线作业提交系统
Jsp实现在线作业提交系统 作为 Computer Science 的学生,凌晨四点之前睡都应该感到羞耻. 项目托管地址:https://github.com/four-in-the-morning/ ...
- 记一次js之button问题
问题描述:记得某天,发现一件让我非常气愤的事情,居然因为一个按钮导致页面跳转失败或者是根本跳转不了界面,哪怕404也不给我报. 问题回现步骤: (1)正常输入url localhost:8080/te ...
- Word中摘要和正文同时分栏后,正文跑到下一页,怎么办?或Word分栏后第一页明明有空位后面的文字却自动跳到第二页了,怎么办?
问题1:Word中摘要和正文同时分栏后,正文跑到下一页,怎么办?或Word分栏后第一页明明有空位后面的文字却自动跳到第二页了,怎么办? 答:在word2010中,菜单栏中最左侧选“文件”->“选 ...
- 关于iframe的父页面调取子页面里的事件(父往子里传)
在body里打开一个iframe页面,想要调取打开的这个页面里的函数: $('iframe')[0].contentWindow.sonFn(canshu); [0]:比如在index.html页面里 ...
- SERVICE问题解决方法
这篇文章主要介绍了Windows服务器下出现ZendOptimizer.MemoryBase@NETWORK SERVICE问题解决方法,需要的朋友可以参考下 日志提示 事件 ID ( 2 )的描述( ...