ThreadPoolExecutor线程池 | 阻塞队列 相关资料整理

文章整理 : (陆续添加)

  1. ThreadPoolExecutor线程池参数设置技巧
  2. 线程池(ThreadPoolExecutor JDK1.7)
  3. 什么是阻塞队列(BlockingQueue)JDK1.8
  4. tomcat最大线程数的设置
  5. Runnable接口的run()方法和start()方法
  6. Runnable只有一个抽象的run()方法 ;Runnable实现类实例(包括Thread的子类都对应于操作系统中的一个线程
  7. Java创建线程数目问题
  8. synchronized与Lock的区别与使用
  9. 生产者/消费者模式的理解及实现

================

学习笔记:

  • 看到网上有几篇文章 , 喷面试官二货 , 指明Runnable和Thread是没区别的云云 , 刚开始也是云里雾里 ; 现在感觉 :两者有本质区别 , 譬如线程池的实现上 , 为什么线程类用的是继承Thread , 复写run()方法 , 而在实现类上 , new Runnable()后复写run()方法呢 ? 说白了Runnable只有一个抽象的run()方法 ;
// 为此 , 我new了两个对象进行比较 ;仅从内存占用来看 ;
// Runnable() = 2字节 ;
// Thread >= 33K ;

一个是线程类 , 一个是接口 ; 信息量和功能肯定不同了 ;

===========
在这里插入图片描述=============

个人补充一点 : tryLock在unlock时,需要判断锁状态 , 否则会抛异常 :

		Thread t1 = new Thread("线程A") {
			@Override
			public void run() {				
				boolean locked = false; 
				try { // 要try.catch后,释放锁;
					locked = lock.tryLock(4, TimeUnit.SECONDS); // 4秒内获取不到,就执行后面的代码 ;
					if (locked) {
						Thread.sleep(5000);
					} else {
						System.out.println(this.getName() + "放弃");
					}
				} catch (Exception e) {
					e.printStackTrace();
				} finally {
					if (locked) { 
						lock.unlock();
						System.out.println(this.getName() + "释放锁");
					}
				}
				System.out.println(this.getName() + "线程结束");
			}
		};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值