中的方法所声明异常类或者是它的子类。
// public void test() throws IOException{}//正确
// public void test() throws FileNotFoundException{}//正确 public void test(){}//默认继承了父类的异常声明方式 }
6.4 ()和printStackTrace(PrintWriter out)
p() 它是把错误打印到控制台。
printStackTrace(PrintWriter out)是把错打到输出到打印流中。
示例:
package com.summary.exception; import java.io.FileNotFoundException; import java.io.PrintWriter; public class ExceptionDemo { }
public static void main(String[] args){ test();} public static void test(){ }
int a = 3;
PrintWriter out = null; try {
out = new PrintWriter(\创建一个打印流对象 if(a > 1){throw new MyException(\出錯了!\
else{throw new IllegalArgumentException(\不大于1!\
} catch (FileNotFoundException e1) {e1.printStackTrace(); }catch(MyException e){
e.printStackTrace(out);//会把错误输出到exception.txt这个文件中去 out.flush();
}finally{ out.close();}
6.5 异常链
第七章 多线程
6.1 进程与线程的区别
进程是一个应用,它是独占所分配的资源的,是的不会和其它的进程去共享的。例如,
我们使用QQ聊天时,QQ就是操作系统的一个进程,这个时候也你可能会去打开浏览器,去看下新闻或者其它什么的。这个时候浏览器也成为了操作系统里的另外一个进程,操作系统会为QQ和浏览器分配各自所要资源,它们之间的资源是不会共享的。
线程是一个应用为了去完成某种特定任务而去执行的程序片段。它包含在进程之内,线程与线程之间是共享资源的。例如,我们去打开一个或多个QQ聊天窗口时,QQ这时就会为我们启动一个或几个QQ聊天窗口线程。一个浏览器中可能会打开多个标签页,这时也就启动了几个线程。
6.2 同步与异步
同步: 一个线程必须等到另一个线程把所占有的资源使用完了之后,才能接着去使用这个资源
异步:两个线程在同一时间点去抢同一个资源。
6.3 并发与并行
并发:
在一个时间片内有一个以上的线程在运行
并行:
同一个时间点中有一个以上的线程在运行
6.4 java中的线程
实现线程的三种方式: 1.继承Thread类 示例:
package com.summary.thread;
public class ThreadDemo extends Thread{
public static void main(String[] args) { }
Thread t = new Thread(); t.start();
}
public void run(){
System.out.println(\一个线程在运行了。\ ); }
2.实现Runnabel接口 package com.summary.thread;
public class RunnableDemo implements Runnable{ }
@Override
public void run() {//线程体
System.out.println(\这是通过实现Runnable接口而产生的线程!\ ); }
public static void main(String[] args) {
RunnableDemo rd = new RunnableDemo();
Thread t = new Thread(rd);//需要把实现Runnable接口的实例化对象做为参数传入
t.start();//启动线程 }
3.使用匿名内部类实现线程: new Thread(){
public void run(){ }
System.out.println(\内部类实现线程方式1!\
}.start();
new Thread(new Runnable(){ });
public void run(){ }
System.out.println(\内部类实现线程方式2!\
6.5 Thead与Runnable接口实现线程的区别与联系
区别:
通过继承Thread来实现的线程之间,是不能共享资源的,而通过实现Runable接口来实现的线程之间
是可共享资源的。具体请下面的示例:
package com.summary.thread;
public class TicketsThreadDemo extends Thread{ }
private int tickets = 4;//票数
public static void main(String[] args) { }
TicketsThreadDemo ttd1 = new TicketsThreadDemo(); TicketsThreadDemo ttd2 = new TicketsThreadDemo(); TicketsThreadDemo ttd3 = new TicketsThreadDemo(); ttd1.start(); try { }
ttd2.start(); ttd3.start();
Thread.sleep(100);
// TODO Auto-generated catch block e.printStackTrace();
} catch (InterruptedException e) {
public void run(){ }
while(true){ }
if(tickets > 0){
tickets--;
System.out.println(\ + tickets); break;
}else
执行结果:
tickets : 3 tickets : 2 tickets : 1 tickets : 0 tickets : 3 tickets : 3 tickets : 2 tickets : 2 tickets : 1 tickets : 0 tickets : 1 tickets : 0
package com.summary.thread;
public class TicketsRunnableDemo implements Runnable{ }
@Override
public void run() { }
while(true){
if(tickets > 0){
tickets--;
System.out.println(\ + tickets); break;
private int tickets = 4;//票数
public static void main(String[] args) { }
TicketsRunnableDemo trd = new TicketsRunnableDemo(); Thread t1 = new Thread(trd); Thread t2 = new Thread(trd); Thread t3 = new Thread(trd); t1.start(); try { }
t2.start(); t3.start();
Thread.sleep(100);
// TODO Auto-generated catch block e.printStackTrace();
} catch (InterruptedException e) {
}else
}
执行结果:
tickets : 3 tickets : 2 tickets : 1 tickets : 0
联系:
下面我们来看下Thread类的源码:
public class Thread implements Runnable {//Thread类实现了Runnable接口 private Runnable target; public Thread() {
init(null, null, \ + nextThreadNum(), 0);
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库corejava学习总结(8)在线全文阅读。
相关推荐: