Java学习多线程第二天】的更多相关文章

内容介绍 线程安全 线程同步 死锁 Lock锁 等待唤醒机制 1    多线程 1.1     线程安全 如果有多个线程在同时运行,而这些线程可能会同时运行这段代码.程序每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的. 我们通过一个案例,演示线程的安全问题: 电影院要卖票,我们模拟电影院的卖票过程.假设要播放的电影是 “功夫熊猫3”,本次电影的座位共100个(本场电影只能卖100张票). 我们来模拟电影院的售票窗口,实现多个窗口同时卖 “魔童哪吒”这…
内容介绍 Thread 线程创建 线程池 线程状态图 1 多线程 1.1     多线程介绍 学习多线程之前,我们先要了解几个关于多线程有关的概念. 进程:进程指正在运行的程序.确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能. 线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程.一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序. 简而言之:一个程序运行后至少有一个进程,一个进程中可以包含多个线…
基础知识 每个正在系统上运行的程序都是一个进程(process).每个进程包含一到多个线程(thread).进程也可能是整个程序或者是部分程序的动态执行. 线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行.也可以把它理解为代码运行的上下文.所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务. Java对多线程的支持是非常强大的,他屏蔽掉了许多的技术细节,让我们可以轻松的开发多线程的应用程序.Java里面有2个方法实现多线程, 1 继承 Thread类,比如 class M…
主密钥 /*  * wait 和 sleep 差别?  * 1.wait能够指定时间也能够不指定  * sleep必须指定时间  * 2.在同步中,对CPU的运行权和锁的处理不同  * wait释放运行权,释放锁    sleep释放运行权,不释放锁  */ //同步里具备运行资格的线程不止一个,可是能得到锁的仅仅有一个,所以能运行的也仅仅有一个 一.停止线程的方式 不可能让线程一直在执行.所以须要让线程停止 1.定义循环结束标记 一般而言,线程执行代码都是循环的,仅仅要控制了循环就能够结束任务…
本文内容来源于  历经5年锤练--史上最适合初学者入门的Java基础视频 线程:就是进程中一个负责程序执行的控制单元(执行路径) 每一个线程都有自己运行的内容.这个内容可以称为线程要执行的任务. 多线程好处:解决了多部分同时运行的问题. 多线程的弊端:线程太多回到效率的降低. JVM启动时就启动了多个线程,至少有两个线程可以分析的出来. 1,执行main函数的线程, 该线程的任务代码都定义在main函数中. 2,负责垃圾回收的线程. 多线程状态图: 如何创建一个线程呢? 创建线程方式一:继承Th…
在java多线程当中还有一种关系需要我们来重点掌握,那就是生产者和消费者的关系.那么什么是生产者,什么是消费者呢?我们可以举个例子来说,有张三.李四负责生产烤鸭,王五.马六负责吃烤鸭,那么前者生产完烤鸭之后,如果烤鸭没有被吃完的话,这个时候就不再生产了,如果此时烤鸭吃没了,这个时候消费者就要告诉生产者,烤鸭吃没了,你要继续生产烤鸭,否则生产者一直处于等待的状态. 如何来用代码体现呢? 1.定义两个类,一个是生产者类 Product  一个是消费者类Consume,两个类分别实现Runnable中…
这一节我们来说一个示例就是卖票示例: 需求: 我们现在有100张票,然后分四个窗口来卖,直到卖完为止. 思路: 1.先定一个一个票类,描述票的属性,还有打印卖出的票,并且实现Runnable中的run方法. 2.定义一个主方法,把这个类当成一个独立的运行程序. 3.在主方法当中创建4个线程来卖票. 代码: class Ticket implements Runnable { ; public void sellT() { while(true) { ) System.out.println(nu…
现在我们有这么一个需求,就是在主线程在运行的同时,我们想做其他的任务,这个时候我们就用到了多线程.那么如何创建多线程,我们知道在系统当中qq的多线程创建是由操作系统来完成的,那么如果我们想在java当中创建多线程的话,应该如何去做呢?解决问题的时候,我们第一个应该想到的是,java当中是否给我们提供了解决该问题的对象,并且把这个对象暴漏出来供我们使用,特别是设计系统.这个时候我们去查阅javaapi. 创建线程的步骤: 1.创建一个类继承Thread类,此时这个类也就是线程 2.在该类当中覆盖T…
关于多进程与多线程 使用多进程的目的:提高CPU利用率. 使用多线程的目的:提高应用程序?利用率. 多线程与多进程区别:进程间内存独立:同一个进程的线程间共享"堆内存和方法区内存",栈内存是独立的,一个线程一个栈. JVM原理 Java命令启动JVM虚拟机,等于启动了一个进程,该进程会自动启动一个主线程,然后主线程去调用某个类的main方法,所以main方法执行在主线程中. 单线程中,一个方法调用另一个方法,则这些方法按序压入栈中,此时JVM中只有一个栈. 线程的创建和启动 方法一:继…
本章学习目标: 了解与设定PATH 了解与指定CLASSPATH 了解与指定SOURCEPATH 使用package与import管理类别 初步认识JDK与IDE的对应关系 一.第一个Java程序 工具:使用Windows自带记事本或下载其他编辑器(推荐NotePad++和Sublime) //第一个HelloWorld!保存为HelloWorld.java public class HelloWorld{ public static void main(String[] args){ Syst…
什么是线程?     可以理解为进程中独立运行的字任务.   使用多线程:     1.继承Thread类:从源码可以看到,Thread累实现了Runnable接口.         如果多次调用start()方法,会出现异常Exception in thread “main” java.lang.IllegalThreadStateException     2.实现Runnable接口     在某些JVM中,i--分为如下三步:         A.取得原有i值         B.计算i…
学习git总结 安装git 1. 安装完成后执行命令git --version查看版本 2.执行命令git config --global user.nam "你的用户名",执行命令git config --global user.email "你的邮箱" 3.运行命令ssh-keygen -t rsa -C "你的邮箱",创建ssh key 4.创建远程仓库 5.克隆远程仓库 本地git的使用 1.初始化仓库(git init) 2.查看当前仓…
1.java标识符 类名.变量名以及方法名都被称为标识符. 关于 Java 标识符,有以下几点需要注意: 所有的标识符都应该以字母(A-Z 或者 a-z),美元符($).或者下划线(_)开始 首字符之后可以是字母(A-Z 或者 a-z),美元符($).下划线(_)或数字的任何字符组合 关键字不能用作标识符 标识符是大小写敏感的 2.java修饰符 访问控制修饰符 : default(默认), public(公共) , protected(受保护), private(私有) 非访问控制修饰符 :…
1. 如果类中的某个属性不希望被序列化则需要transient关键字 序列化一组对象 2.无问题 3.明天学习打印流…
1.Scanner类 序列化 将实体类标注为可序列化 2.不明白 3.明天学习反序列化,transient关键字,序列化一组对象…
1.内存操作流 缓冲流 用BufferedReader读取数据 使用BufferedWriter写数据 使用BufferInputStream和BufferOutputStream读写图片 2.有很多的方法不懂 3.明天学习Scanner类和对象序列化…
1.过滤处理流 DataOutputStream输入数据 用DataInputStream读数据 2.方法太多记不清 3.明天学习内存操作流和缓冲流…
1.字节流输出内容 用字节流读文件内容 字符输出流写入 字符输入流 2.没问题 3.明天学习到缓冲流…
1. 目录管理 2.文件方法太多记不清 3.明天学习流和流的分类…
1.今天学习了用log4j记录日志 综合实例 2.不知道日志什么时候用到 3.明天学习12章…
1.异常处理 try...catch...finally... finally带return finally也可省略 try里面可以有try 多个异常用IllegalAgruementException throw捕获异常 无反应 2.今天throw方面没有太明白,当条件不成立时抛去是抛哪了 3.明天学习8.2…
1.今天学习了变量与常量看了大道至简 字节型:byte 1字节 短整型:short 2字节  整型:int 4字节长整型:long 8字节单精度浮点型:float 4字节双精度浮点型:double 8字节字符型:char 2字节布尔型:boolean 1字节 常量定义:public static final    例:public static final double PI=3.14 2.小学期任务不会,链表知识不足,看视频也没有看明白 3.明天要学习数据的类型,标识符,转义字符以及运算符.…
形成死锁的前提是同步代码块嵌套. 什么是死锁?当一个线程拿到锁以后在这个锁内部的代码需要访问另一段的代码的时候另外一个程序的锁被另外一个线程拿到,这样的话,就造成了两个锁互不想让程序没法往下执行的这种状况就是死锁. class DeadDemoA implements Runnable { Object obj = new Object(); ; public void run() { ){ while(true) { synchronized(obj) { System.out.println…
package cys; public class Example9_3 { public static void main(String[] args) { // TODO Auto-generated method stub Bank bank = new Bank(); bank.setMoney(200); Thread thread1,thread2; thread1=new Thread(bank); thread1.setName("One"); thread2=new…
package cys; public class Example9_2 { public static void main(String[] args) { // TODO Auto-generated method stub People personal1,personal2; StringBuffer str=new StringBuffer(); personal1 = new People("李四",str); personal2 = new People("王五…
一.流程控制 1.顺序结构:自上而下,依次执行(从上到下,一直走下去) 2.选择结构:(1)if .if—else.嵌套if (2)switch(mod){ case 1:执行代码 case 2:执行代码 case 3:执行代码  }根据不同的mod值,选择不同的操作执行 3.循环结构:while.do—while.for循环 (1)whlie(判断条件){ 循环体 } (2)do{ 循环体 }while(判断条件): (3)for(初始值:判断条件:步长){ 循环体 } (4)while与do…
学习内容总结 运算符与表达式 If语句.switch语句 break和continue语句 数组和for语句 IDEA的安装和调试 教材学习中的问题和解决过程 在第一次使用IDEA中出现了一些情况,在同学的建议下,新建了,发现未在出现问题 在IDEA中调试代码调试截图 代码托管 学习进度条 代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长 目标 5000行 30篇 400小时 第一周 200/200 2/2 20/20 第二周 460/500 3/4 30/38 J…
1.什么是阻塞队列? 所谓队列,遵循的是先进先出原则(FIFO),阻塞队列,即是数据共享时,A在写数据时,B想读同一数据,那么就将发生阻塞了. 看一下线程的四种状态,首先是新创建一个线程,然后,通过start方法启动线程--->线程变为可运行可执行状态,然后通过数据产生共享,线程产生互斥---->线程状态变为阻塞状态---->阻塞状态想打开的话可以调用notify方法. 这里Java5中提供了封装好的类,可以直接调用然后构造阻塞状态,以保证数据的原子性. 2.如何实现? 主要是实现Blo…
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多线程第二十九章:可重入锁与不可重入锁详解 下一章 "全栈2019"Java多线程第三十章:尝试获取锁tryLock()方法详解 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复…