本月博客排行
-
第1名
龙儿筝 -
第2名
lerf -
第3名
fantaxy025025 - johnsmith9th
- xiangjie88
- zysnba
年度博客排行
-
第1名
青否云后端云 -
第2名
宏天软件 -
第3名
gashero - wy_19921005
- vipbooks
- benladeng5225
- e_e
- wallimn
- javashop
- ranbuijj
- fantaxy025025
- jickcai
- gengyun12
- zw7534313
- qepwqnp
- 解宜然
- ssydxa219
- zysnba
- sam123456gz
- sichunli_030
- arpenker
- tanling8334
- gaojingsong
- kaizi1992
- xpenxpen
- 龙儿筝
- jh108020
- wiseboyloves
- ganxueyun
- xyuma
- xiangjie88
- wangchen.ily
- Jameslyy
- luxurioust
- lemonhandsome
- mengjichen
- jbosscn
- zxq_2017
- lzyfn123
- nychen2000
- forestqqqq
- wjianwei666
- ajinn
- zhanjia
- Xeden
- hanbaohong
- java-007
- 喧嚣求静
- mwhgJava
- kingwell.leng
最新文章列表
排查CPU故障的方法和技巧
一个应用占用CPU很高原因:1.计算密集;2.死循环
定位步骤:
1:top命令,发现Java进程CPU占用率
2:ps aux | grep PID命令:定位到具体线程
3:ps -mp pid -o THREAD,tid,time显示线程列表
ps -mp pid -o THREAD,tid,time首先找到了耗时最高的线程,其次将需要的线程ID转换为16进制格式:printf " ...
java多线程间的通信实例
----线程间的通信
public class ListAdd1 {
private volatile static List list = new ArrayList();
public void add(){
list.add("bjsxt");
}
public int size(){
return list.size();
}
public st ...
线程的基本知识总结
### (一)创建线程的方式
(1)实现Runnable接口
(2)继承Thread类
推荐使用接口,能够做到定义与实现分离,耦合更低
### (二)关于线程的优先级
thread2.setPriority(Thread.MAX_PRIORITY)
等级越高,优先运行
### (三)关于线程的yield的方法
关于yield方法,是指当前线程可能运行不太重要的任务,可以通 ...
worker模式
今天来学学,大家也好对线程池有一个更好的理解。
public class Main {
public static void main(String[] args) {
Channel channel = new Channel(5); // 工人线程的數量,即线程池内的线程数目
channel.startWorkers();//启动线程池内 ...
java四种线程池实例 (kaigege)
Java通过Executors提供四种线程池:
1.newCachedThreadPool: 创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。
2.newFixedThreadPool: 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。
3.newScheduledThreadPool: 创建一个定长线程池,支持定时及周期性任务执行。 ...
生产者-消费者模式实现
生产者是指:生产数据的线程
消费者是指:使用数据的线程
生产者和消费者是不同的线程,他们处理数据的速度是不一样的,一般在二者之间还要加个“桥梁参与者”,用于缓冲二者之间处理数据的速度差。
下面用代码来说明:
//生产者
public class MakerThread extends Thread {
private final Random random;
priva ...
java并发之同步辅助类Phaser
Phaser含义:
更加复杂和强大的同步辅助类。它允许并发执行多阶段任务。当我们有并发任务并且需要分解成几步执行时,(CyclicBarrier是分成两步),就可以选择使用Phaser。Phaser类机制是在每一步结束的位置对线程进行同步,当所有的线程都完成了这一步,才允许执行下一步。
跟其他同步工具一样,必须对Phaser类中参与同步操作的任务数进行初始化,不同的是,可以动态的增加或者减少任务数 ...
java并发之同步辅助类CyclicBarrier
CyclicBarrier含义:
栅栏允许两个或者多个线程在某个集合点同步。当一个线程到达集合点时,它将调用await()方法等待其它的线程。线程调用await()方法后,CyclicBarrier将阻塞这个线程并将它置入休眠状态等待其它线程的到来。等最后一个线程调用await()方法时,CyclicBarrier将唤醒所有等待的线程然后这些线程将继续执行。CyclicBarrier可以传入另一个 ...
Java 线程池源码分析
目录
FutureTask
ExecutorCompletionService
AbstractExecutorService
ThreadPoolExecutor
FutureTask
FutureTask类 结构
FutureTask实现了RunnableFuture接口,而RunnableFuture继承了Runnable ...
Wait()、sleep()和yield()方法的区别
Wait()、sleep()和yield()方法的区别
1、所属类不同:wait()是Object类中的非静态方法;sleep()是Thread类中的静态方法;yield()也是Thread类中的静态方法。
2、作用不同:wait()用于线程同步或者线程之间进行通信;sleep()用于休眠当前线程,并在指定的时间点被自动唤醒;yield()临时暂停当前正在执行的线程,来让有同样优先级的正在等待的 ...
等待/通知之交叉备份实例
题目:创建20个线程,其中10个线程是将数据备份到A数据库中,另外10个线程将数据备份到B数据库中,并且备份A数据库和B数据库是交叉进行的。
首先创建出20个线程,效果如图3-41所示。
通过一些手段将这20个线程的运行效果变成有序的,如图3-42所示。
public class DBTools {
//确保备份数据库A首先执行
private vol ...
Java 并发编程:volatile的使用及其原理
Java 并发编程:volatile的使用及其原理
Java并发编程系列:
Java 并发编程:核心理论
Java并发编程:Synchronized及其实现原理
Java并发编程:Synchronized底层优化(轻量级锁、偏向锁)
Java 并发编程:线程间的协作(wait/notify/sleep/yield/join)
Java并发编程:Synchronized及其实现原理
Java并发编程:Synchronized及其实现原理Java并发编程系列:Java 并发编程:核心理论 Java并发编程:Synchronized及其实现原理Java并发编程:Synchronized底层优化 ...
java实现定时任务的三种方法
/**
* 普通thread
* 这是最常见的,创建一个thread,然后让它在while循环里一直运行着,
* 通过sleep方法来达到定时任务的效果。这样可以快速简单的实现,代码如下:
* @author GT
*
*/
public class Task1 {
public static void main(String[] args) {
// run in a secon ...
ThreadLocal共享变量2
import java.util.Random;
public class ThreadLocalTest {
private static ThreadLocal<Integer> x = new ThreadLocal();
public static void main(String[] args) {
for (int i = ...
ThreadLocal共享变量1
import java.util.Random;
public class ThreadLocalTest {
private static ThreadLocal<Integer> x = new ThreadLocal();
public static void main(String[] args) {
for (int i = ...