1.多线程方法 * Thread 里面的俩个方法* 1.yield让出CPU,又称为礼让线程* 2.setPriority()设置线程的优先级 * 优先级最大是10,Thread.MAX_PRIORITY,最小是1,Thread.MIN_PRIORITY 2.单例设计模式 * 单例设计模式:保证类在内存中只有一个对象. * 如何保证类在内存中只有一个对象呢? * (1)控制类的创建,不让其他类来创建本类的对象.private * (2)在本类中定义一个本类的对象.Singleton s; * (…
1:线程(理解) (1)死锁 概念: 同步中,多个线程使用多把锁之间存在等待的现象. 原因分析: a.线程1将锁1锁住,线程2将锁2锁住,而线程1要继续执行锁2中的代码,线程2要继续执行锁1中的代码, 但是此时,两个锁均处于锁死状态.最终导致两线程相互等待,进入无限等待状态. b.有同步代码块的嵌套动作. 解决方法: 不要写同步代码块嵌套. 例子:cn.itcast2.DeadLockThread;  cn.itcast2.demo package cn.itcast2; public clas…
android 中的线程池 线程池的优点: 1 重用线程池中的线程,避免了线程的创建和销毁带来的性能开销 2 能有效的控制最大并发数,避免大量线程之间因为喜欢抢资源而导致阻塞 3 能够对线程进行简单的管理,提供定时执行以及指定间隔时间循环执行等 android 中的线程池源自java 中的Executor,Executor是一个接口,正真的实现是ThreadPoolExecutor. ThreadPoolExecutor 提供参数配置线程池. 下面是一个常用的构造方法: public Threa…
1.并发编程三要素? 1)原子性 原子性指的是一个或者多个操作,要么全部执行并且在执行的过程中不被其他操作打断,要么就全部都不执行. 2)可见性 可见性指多个线程操作一个共享变量时,其中一个线程对变量进行修改后,其他线程可以立即看到修改的结果. 实现可见性的方法: synchronized或者Lock:保证同一个时刻只有一个线程获取锁执行代码,锁释放之前把最新的值刷新到主内存,实现可见性. 3)有序性 有序性,即程序的执行顺序按照代码的先后顺序来执行. 2.多线程的价值? 1)发挥多核CPU的优…
在C#多线程编程中,关于是使用自己创建的线程(Thread)还是使用线程池(ThreadPool)线程,一直很困惑,知道看了Jeffrey Richter的相关介绍才明白,记录如下: 当满足一下任何条件,就可以显式地创建自己的线程: 1.线程需要以非普通线程优先级运行.所有线程池线程都已普通优先级运行:虽然可以更改线程池线程的优先级,但是不建议那样做.另外,在不同的线程池操作之间,对优先级的更改是无法持续的. 2.需要线程表现为一个前台线程,防止应用程序在线程结束任务钱终止.线程池线程始终是后台…
线程池线程忙碌且阻塞队列也满了时给一个拒接的详细报告.下面是一个自定义的终止策略类,继承了ThreadPoolExecutor.AbortPolicy类并覆盖了rejectedExecution方法把当前线程及线程池的状态给做了一个详细的报告. 默认抛出的异常消息比较简单: /** * Always throws RejectedExecutionException. * * @param r the runnable task requested to be executed * @param…
近期看了一些JVM和并发编程的专栏,结合自身理解,来做一个关于(线程池线程数与(CPU密集型任务和I/O密集型任务)的关系)的总结: 1.任务类型举例: 1.1: CPU密集型: 例如,一般我们系统的静态资源,比如js,css等,会存在一个版本号,如 main.js?v0,每当用户访问这个资源的时候,会发送一个比对请求到服务端,比对本地静态文件版本和服务端的文件版本是否一致,不一致则更新.这种任务一般不占用大量IO,所以后台服务器可以快速处理,压力落在CPU上. 1.2: I/O密集型: 比方说…
最近,在使用EventStore的.NET Client API采用大量线程池线程同步写入Event时(用于模拟ASP.NET服务端大并发写入Event的情况),发现EventStore的连接会随机中断,并且在服务端日志中显示客户端连接Heartbeat超时(如果不了解EventStore,请点击传送门).由于系统中全局共享一个EventStore连接,当连接中断时,会导致所有的写入操作被Block,而EventStore连接的重连速度比较慢(测试机器上重连需要耗费20秒到1分钟),这样会导致比…
JUC源码分析-线程池篇(三)Timer Timer 是 java.util 包提供的一个定时任务调度器,在主线程之外起一个单独的线程执行指定的计划任务,可以指定执行一次或者反复执行多次. 1. Timer 类结构 Timer 由 TimerThread,TaskQueue ,TimerTask 组成. Timer 初始化时会构建一个 TimerThread 线程用于执行调度任务.TaskQueue 保存所有调度的定时任务,基于二叉树小顶堆时间,第一个要执行的任务永远位于 queue[1],其插…
JAVA之旅(十四)--静态同步函数的锁是class对象,多线程的单例设计模式,死锁,线程中的通讯以及通讯所带来的安全隐患,等待唤醒机制 JAVA之旅,一路有你,加油! 一.静态同步函数的锁是class对象 我们在上节验证了同步函数的锁是this,但是对于静态同步函数,你又知道多少呢? 我们做一个这样的小实验,我们给show方法加上static关键字去修饰 private static synchronized void show() { if (tick > 0) { try { Thread…