java笔试准备cap1-线程

Thread[
interrupt():向线程发送中断请求,如果当前线程被一个sleep调用阻塞,则抛出InterruptedException异常
static interrupted():检测当前线程是否被中断,并且清除中断状态
isinterrupted():检测是否存在线程被中断
void join():终止指定线程
]
Lock bankLock = new ReentrantLock() //定义锁对象。用来实现同步。
Lock[
lock()锁住其下的代码块,直至调用unlock方法
newCondition():返回一个与锁相关的条件对象Condition
]
Condition[
await():将线程放到条件的等待集中
signalAll():接触该条件的等待集中的所有线程的阻塞状态(一般使用这个)
signal():从该条件的等待集中随机的选择一个线程解除阻塞状态
]
Object[
notifyAll():解除那些在该对象上调用wait方法的线程的阻塞状态,该方法只能在同步方法或同步块内部调用。如果当前线程不是对象锁的持有者,该方法抛出一个IllegalMonitorStateException异常
notify()随机选择一个在该对象上调用wait方法的线程,解除其阻塞状态。该方法只能在一个同步方法或者同步块中调用,如果当前线程不是对象锁的持有者,该方法抛出一个IllegalMonitorStateException异常
wait():导致线程进入等待状态直到被通知,该方法只能在一个同步方法中调用,如果当前线程不是对象所的持有者,该方法抛出一个IllegalMonitorStateException异常
(面试题:能唤醒wait的只有notify方法:错)
]
BlockingQueue(子类:ArrayBlockingQueue,LinkedBlockingQueue)[
offer():增加一个元素,队列满返回false
poll():删除一个元素,队列空返回null
peek():查询队头元素,队列空返回null

put():增加元素,满阻塞
take():移除并返回队头元素,空则阻塞
]

线程安全 juc[
HashMap线程不安全,HashTable线程安全效率低,用ConcurrentHashMap代替
]

Callable 等价于Runnable[
call():等价于run()
]

Callable和Future从文件夹中所有文件中匹配关键字执行步骤[
List<Future> results = new ArrayList<>();
for (File file : files){
if (file.isDirectory()){
MatchCounter counter = new MatchCounter(file,keyword);
FutureTask task = new FutureTask<>(counter);
results.add(task);
Thread t = new Thread(task);
t.start();
}else if (search(file))count++;
}
for (Future result : results){
try {
count += result.get();
} catch (ExecutionException e){
e.printStackTrace();
}
}
]

执行器,线程池[
ExecutorService pool = Executors.newCachedThreadPool();
MatchCounter counter = new MatchCounter(new File(directory),keyword,pool);(其中MatchCounter implements Callable)
Future result = poll.submit(counter);
]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值