java复习-多线程
和线程之间的关系:
进程:进程是程序的一次动态执行过程,他经理了代码加载,执行到执行完毕的一个完整过程,这个过程也是进程本身从产生,发展到最终消亡的过程。
线程:线程是实现并发机制的一种有效手段,进程和线程一样,都是实现并发的一个基本单元。
java中多线程实现:
集成Thread和实现runnable
通过线程类的start方法来并发执行线程里面的线程主体内容。
Runnable线程的执行方式如下:
Thread是Runnable接口的子类.
Thread类与Runnable接口的区别:
1 使用Thread类在操作多线程的时候无法达到资源共享的目的,runnable接口能够实现资源共享;
2 Runnable接口比起继承Thread类有如下的明显的优点:
适合多个相同程序代码的线程去处理同一个资源。
可以避免由于但继承局限所带来的影响。
增强代码的健壮性,代码能够多线程共享,代码和数据独立
创建状态:线程对象创建之时:Thread t = new Thread();
就绪状态:t.start(),调用start方法,等待cpu进行调度;
运行状态:执行线程里面的run方法;
阻塞状态:暂时停止执行,可能将资源交给其他线程使用,调用线程的wait或者sleep方法;
终止状态:线程执行完毕后不在使用了。
线程常用操作方法:
取得线程和设置线程名称:
Thread.currentThread().getName(); -- >获取线程名称。
当然也可以通过setName方法进行设置。
java运行时候启动几条线程:
2条;
1条jvm线程,一条gc线程。
判断线程是否运行:
强制线程执行:
调用线程的join()方法,其他线程无法运行,必须等待此线程完成后才能继续执行。
线程休眠:
Thread.sleep()。
线程中断:
一个线程被另外一个线程中断其操作的状态,使用interupt()方法完成。
后台线程:
只要程序没执行完,java进程不会消失,设置后台线程,即使进程消失,线程继续执行。
通过setDaemon()来实现。
线程优先级:
线程礼让:
同步和死锁:
同步是解决什么问题呢,一个数据在读取的时候,其他线程访问该线程,那么这时候就应该使用同步。
同步代码块:
同步方法:
生产者消费者问题:
线程生命周期:
线程有:
suspend()暂时挂起线程
resume()恢复挂起的线程
stop()停止线程
这三个方法容易导致死锁问题,不推荐使用。
比较好的停止线程的方法:
通过标志位让线程停止。
java复习-多线程的更多相关文章
- [Java复习] 多线程&并发 知识点补充
0. wait/notify/notifyAll的理解? wait:让持有该对象锁的线程等待: notify: 唤醒任何一个持有该对象锁的线程: notifyAll: 唤醒所有持有该对象锁的线程: 它 ...
- [Java复习] 多线程 Multithreading
Q1多线程基础 进程和线程? 进程: 1. 一段程序执行过程,动态的,相对而言程序是静态的.(与类和对象的关系类似) 2. CPU资源分配最小单元,包括CPU调度和资源管理. 3. 一个进程可以有多个 ...
- Java复习——多线程与并发库
开启一个线程 实现一个线程的方式有两种:继承Thread类.实现Runnable接口(也存在说三种的情况,第三种是使用线程并发库中的线程池创建一个线程).这两种方法都需要重写Run方法,具体的线程逻辑 ...
- [Java复习] 多线程 并发 JUC 补充
线程安全问题? 当多个线程共享同一个全局变量,做写的操作时,可能会受到其他线程的干扰.读不会发生线程安全问题. -- Java内存模型. 非静态同步方法使用什么锁? this锁 静态同步方法使用什么 ...
- Java复习8.多线程
Java复习8 多线程知识 20131007 前言: 在Java中本身就是支持多线程程序的,而不是像C++那样,对于多线程的程序,需要调用操作系统的API 接口去实现多线程的程序,而Java是支持多线 ...
- Java复习1.基本知识
Java语言概述 20131003 开头语: 开发领域,重要的编程语言基本都是C/C++,然后就是Java, C/C++就不用说了,另外掌握Java对你是有很大的帮助的,而且也会扩宽你的择业范围.同时 ...
- 【Java】多线程入门
Java多线程学习(入门) 前言 目前对于线程的了解仅仅停留在学习python的threading库,很多线程的概念没有真正弄清楚,所以选择来系统性的学习多线程.那么这次选择的是Java的多线程学习, ...
- Java的多线程机制系列:不得不提的volatile及指令重排序(happen-before)
一.不得不提的volatile volatile是个很老的关键字,几乎伴随着JDK的诞生而诞生,我们都知道这个关键字,但又不太清楚什么时候会使用它:我们在JDK及开源框架中随处可见这个关键字,但并发专 ...
- java之多线程 二
线程的生命周期: 当线程被创建并被启动时,它既不是一启动就进入了执行状态,在线程的生命周期中,它要经过new(新建),就绪(Runnable),运行(Running),阻塞(Blocked),dead ...
随机推荐
- 前端 PC端兼容性问题总结
1.如果图片加a标签在IE9-中会有边框 解决方案: img{border:none;} 2.rgba不支持IE8 解决方案:可以用 opacity eg: opacity:0.7;/*FF chr ...
- Hadoop集群搭建步骤
实验性操作是在虚拟机里进行的,除了搭建hadoop本身的操作之外,遇到的其它问题总结如下: 1. 虚拟机挂载windows磁盘: 添加硬件,要保证该硬件此时没有被读写访问等,因为挂载后,该磁盘在宿主机 ...
- php学习笔记——语言切换
现在的网站很多都可以实现多语言,于是记录一下多语言的实例. 方法一:通过将所有显示在页面的字段放在一个message文件里面来实现 思路如下图: test代码: main.php: <?php ...
- ios版本更新总结
更新思路,获取APP Store 版本号与项目本地版本号对比,如果本地低于商店版本号,就提示用户更新(说明:在上架项目时请保持本地和商店版本号一致,避免检测更新问题被拒) 1.获取商店版本号,代码如下 ...
- 免费SSL证书申请
https://buy.wosign.com/free/#apply 和 http://www.startssl.com/
- HTTP请求返回状态详解
当用户试图通过 HTTP 访问一台正在运行 Internet 信息服务 (IIS) 的服务器上的内容时,IIS 返回一个表示该请求的状态的数字代码.状态代码可以指明具体请求是否已成功,还可以揭示请求失 ...
- JSON 和 JSONP 两兄弟
项目中遇到这个新事物,转一篇不错的总结,原文 如今ajax威风凛凛 但说到AJAX就会不可避免的面临两个问题,第一个是AJAX以何种格式来交换数据?第二个是跨域的需求如何解决? 这两个问题目前都有不同 ...
- odoo 获取当前会计年度
odoo 获取当前会计年度 def default_fiscal_year(self): current_period = self.env['account.fiscalyear'].find() ...
- NVIC
1中断:每一个中断都会对应一个服务程序 2NVIC 他的做用是负责中断优先级管理 3IP bit[7:4]每一个中断都有一个IP寄存器,用于设置中断相关的属性 AIRCR[10:8]只一个AIRCR寄 ...
- WinForm 布局,容器、打印和对话框控件
今天,我主要学习了容器控件.打印控件.对话框控件. 在正式进行今天的内容之前,首先补充了布局的两个属性:Anchor:锁定位置,Dock:填充位置,一般与容器控件配合使用. 之后,我学习了第一部分内容 ...