聊聊并发:http://ifeve.com/java-concurrency-thread-directory/

阻塞状态:

sleep  可中断利用 interrupt方法

wait

IO  不可中断   I:关闭底层资源  II:new I O

任务试图在某个对象上调用其同步控制方法,但是对象锁被另一个任务获取  syn不可中断   lock.lockInterruptibly()  可以中断


Executor.shutdownNow() 发送一个interrupt() 调用给它启动的所有线程

如何中断单一任务?

Executor.submit()启动单一任务 该方法返回一个Futrue<?> 类型的参数

利用这个参数的cancel(true)即相当于在该线程上调用interrupt()


public static void main(String[]args){final Test st = new Test();new Thread(){@Overridepublic void run(){st.f1(100);}}.start();System.out.println("main is over");}
}

刚才写测试用例 突然发现自己对有些概念不是特别明确 比如上面的例子

我原以为 main线程输出完那句话 整个程序就结束了 其实并非这样

只有当把副线程设置为守护线程的时候 才是我想象的那样


如果在线程上调用interrupt方法停止某个任务 那么在run循环碰巧没有产生任何阻塞的情况下 任务无法中断

1可以调用interrupted检查中断状态  while(!Thread.interrupted())


wait方法

I带毫秒数,在wait期间对象锁是释放的 可以通过notify notifyall释放 或者时间到期 从wait中恢复

II不带参数 wait无限期等待下去

调用wait notify notifyall 的方法必须在同步控制方法或者同步控制块里


死锁的四个条件:

1互斥条件。任务使用的资源至少有一个是不能共享的

2至少有一个任务它必须持有一个资源且正在等待获取一个当前被别的任务持有的资源。

3资源不能被任务抢占

4必须有循环等待

转载于:https://www.cnblogs.com/luyu1993/p/6985788.html

JAVA多线程--Thinking in java相关推荐

  1. 一篇文章弄懂Java多线程基础和Java内存模型

    文章目录 一.多线程的生命周期及五种基本状态 二.Java多线程的创建及启动 1.继承Thread类,重写该类的run()方法 2.通过实现Runnable接口创建线程类 3.通过Callable和F ...

  2. java 多线程的单例模式,Java多线程中的单例模式两种实现方式

    Java多线程中的单例模式 一.在多线程环境下创建单例 方式一: package com.ietree.multithread.sync; public class Singletion { priv ...

  3. java 多线程写缓存,Java多线程_缓存对齐

    1.什么是缓存对齐 当前的电脑中,数据存储在磁盘上,可以断电保存,但是读取效率较低.不断电的情况下,数据可以在内存中存储,相对硬盘效率差不多是磁盘的一万倍左右.但是运算时,速度最快的是直接缓存在CPU ...

  4. Java多线程编程(1)--Java中的线程

    一.程序.进程和线程   程序是一组指令的有序集合,也可以将其通俗地理解为若干行代码.它本身没有任何运行的含义,它只是一个静态的实体,它可能只是一个单纯的文本文件,也有可能是经过编译之后生成的可执行文 ...

  5. java 多线程 数据重复,java 多线程 出现数据重复调用有关问题

    java 多线程 出现数据重复调用问题 线程操作过程描述: 1.线程查询数据库表(table1)数据,并遍历修改记录状态(防止出现数据重复调用).(此操作加入了同步锁) 2.调用接口,获取返回的状态. ...

  6. Java多线程并发编程--Java并发包(JUC)

    Java多线程并发–Java并发包(JUC) 前言 前一篇文章中,笔者已经介绍了Java多线程的一些基础知识,但是想要成为一名中高级Java程序员还必须懂得Java并发包(JUC)的知识点,而且JUC ...

  7. java多线程模拟龟兔赛跑,JAVA多线程模拟龟兔赛跑

    JAVA多线程模拟龟兔赛跑! class Rabbit extends Thread{ Tortoise tor; int Journey; int RabbitSpeed; public Rabbi ...

  8. 进度条线程怎么用java,多线程 进度条 java

    场景:java设计形式(2)-观察者模式Swing 多线程事件处理进度条和Observer的一个具体应用 java设计模式(2)--观察者模式Swing 多线程事件处理进度条和Observer的一个具 ...

  9. Java 多线程 并发 锁 Java线程面试题

    1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速.比如,如果一个线程完成 ...

  10. java 多线程输出_[Java多线程]ABC三个线程顺序输出的问题

    大概的问题是这样的: 有A,B,C三个线程, A线程输出A, B线程输出B, C线程输出C 要求, 同时启动三个线程, 按顺序输出ABC, 循环10次 这是一个多线程协同的问题, 本身多线程是没有执行 ...

最新文章

  1. CentOS6.5 gcc升级到4.8.2
  2. 文件上传常见绕过分析
  3. java空值转datetime,解决Java (Spring boot) 读取数据库字段,datetime 格式为null,抛出异常 Zero date value prohibited...
  4. eclipse中JS文件乱码
  5. QQ5.0左侧滑动显示效果
  6. 三菱plc编程软件gx-developer在win10中无法使用及工程无法建立解决方法
  7. java毕业实习日志_《Java课程实习》日志(周一)
  8. 沃邮箱的服务器设置,沃邮箱Outlook和Foxmail设置收发邮件
  9. 微信 考勤 php,JavaScript_微信企业号开发之微信考勤Cookies的使用,在上篇文章给大家介绍了微信 - phpStudy...
  10. 北京市金融工作局:大数据重塑未来金融监管方式
  11. python reset_在python中创建'reset'方法以重置已编辑的字符串
  12. 系统安全性之认证技术
  13. SC7A20获取三轴加速度值
  14. Gzip的动态压缩和静态压缩详解
  15. css3多列布局(columnz),多列布局相关属性
  16. word 合并 两个文件 合并成一个
  17. 一次数据库冷备份还原过程
  18. 使用boostrap制作导航栏
  19. CocosCreator 计时器
  20. vue脚手架和html,vue脚手架的作用是什么?

热门文章

  1. 【其他】配置JIRA
  2. Android百分比布局初探
  3. CDN服务品质协议1
  4. mysql之左连接与右连接
  5. 多层PCB的叠层板材
  6. [OpenCV] -- win7下配置OpenCV的Qt开发环境
  7. Java中Map的entrySet()详解 || Map.Entry的详解
  8. 爬虫的配置、启动和终止
  9. Python 技术篇 - 通过代码查看文本的编码类型实例演示,如何查看文件的编码类型,文件编码查看方法
  10. Java的Socket通信(多Clients/Server模型)