Java并发编程
RainMcCom
菜鸟Android程序猿
展开
-
1.1线程的创建与运行
1.创建一个实现了Runnable接口的Calculate类public class Calculate implements Runnable{ private int number; public Calculate(int number) { this.number=number; } @Override public void ru原创 2016-09-19 17:58:58 · 252 阅读 · 0 评论 -
1.12使用工厂类创建线程
工厂模式是面向对象编程中最常用的模式之一,它是一个创建者模式,使用一个类为其他的一个或者多个类创建对象。使用工厂类,可以 将对象的创建集中化,这样做的好处有:1) 更容易修改类,或者改变创建对象的方式。 2) 更容易为有限资源限制创建对象的数目。3) 更容易为生成的对象生成数据统计。 Java提供了ThreadFactory接口,这个接口实现了线程对象工厂。1.创建一个实现ThreadFactor原创 2016-09-26 09:27:49 · 354 阅读 · 0 评论 -
1.11线程组不可控异常的处理
这种做法是建立一个方法对线程组中的任何线程对象抛出的异常进行捕获。1.创建一个继承自ThreadGroup的MyThreadGroup类,并覆盖uncaughtException方法,用来捕获线程组线程抛出的异常。public class MyThreadGroup extends ThreadGroup{ public MyThreadGroup(String name) {原创 2016-09-26 09:01:11 · 497 阅读 · 0 评论 -
1.10线程的分组
1.创建继承Runnable接口的SearchTask类import java.util.Date;import java.util.Random;import java.util.concurrent.TimeUnit;public class SearchTask implements Runnable{ private Result result; public SearchT原创 2016-09-25 21:19:22 · 369 阅读 · 0 评论 -
1.6线程的终止
1.创建实现Runnable接口的DataSourcesLoader类,在run()方法中让它休眠4秒。import java.util.Date;import java.util.concurrent.TimeUnit;public class DataSourcesLoader implements Runnable{ @Override public void run() {原创 2016-09-21 23:21:35 · 280 阅读 · 0 评论 -
1.9线程局部变量的使用
如果创建的对象是实现了Runnable接口的类的实例,并作为参数传给给多个线程对象并启动这些线程,那么所有的线程将共享共同的属性。在有的时候,如果不想某些属性被共享,那么就需要 使用Java提供的线程局部变量了。首先看一下不使用线程局部变量的例子:1.创建一个实现Runnable接口的UnSafeTask类import java.util.Date;import java.util.concurr原创 2016-09-24 23:52:57 · 329 阅读 · 0 评论 -
1.5线程的休眠和恢复
1.写一个实现Runnable接口的FileClock类import java.util.Date;import java.util.concurrent.TimeUnit;public class FileClock implements Runnable{ @Override public void run() { for(int i=0;i<10;i++原创 2016-09-21 09:53:17 · 298 阅读 · 0 评论 -
1.4线程中断的控制
如果线程实现了复杂的算法并且分布在几个方法中,或者线程里面有递归调用的方法,就得使用Java提供的InterruptedException异常来控制线程的中断。当检查到线程中断的时候,抛出InterruptedException异常,然后在run方法中捕获并处理这个异常。1.编写一个实现Runnable接口的FileSearch类,该类用于查找某个文件夹里是否含有某个文件。public class原创 2016-09-21 09:36:42 · 296 阅读 · 0 评论 -
1.3线程的中断
1.写一个继承自Thread的统计素数的PrimeGenerator类public class PrimeGenerator extends Thread{ @Override public void run() { long number=1L; while(true) { if(isPrime(numb原创 2016-09-19 22:22:56 · 338 阅读 · 1 评论 -
1.2线程信息的获取和设置
1.创建一个实现Runnable接口的Calculate类public class Calculate implements Runnable{ private int number; public Calculate(int number) { this.number=number; } @Override public void run原创 2016-09-19 22:10:05 · 385 阅读 · 0 评论 -
1.8线程中不可控的异常处理
Java中的异常有两种。 1.非运行时异常:这种异常必须在方法声明的throws语句中指定,或者在方法内捕获。 2.运行时异常:这种异常不必再 方法中指定,也不必在方法内捕获。线程的run方法不支持在方法中指定throws语句,在抛出非运行时异常,需要捕获处理异常;在抛出运行时异常,默认的是在控制台 输出堆栈信息,并退出程序。Java提供了一种在线程里捕获和处理运行时异常的机制。实现处理运行时异原创 2016-09-22 17:20:22 · 681 阅读 · 0 评论 -
1.7守护线程的创建与运行
1.创建一个实现Runnable接口的WriteTask类,每隔1秒向队列中添加一个Event对象。import java.util.Date;import java.util.Deque;import java.util.concurrent.TimeUnit;public class WriteTask implements Runnable{ /** * Data stru原创 2016-09-22 16:50:49 · 594 阅读 · 0 评论 -
2.1使用synchronized实现同步方法
1.创建Account类,该类用于模拟银行账户public class Account { //账户的余额 private double balance; //取得账户的余额 public double getBalance() { return balance; } //设置账户的余额 public void setBalance(原创 2016-09-27 22:17:11 · 341 阅读 · 0 评论