当前位置:文档之家› 多线程ppt课件

多线程ppt课件

new MyThread(); new MyThread().start(); System.out.println("Main say:Hello,World"); } }
10
3. 创建多线程
Runnable 与Thread
1. public class mythread extends Applet implements Runnable (小应用或已经是某个类的子类时)
线程对象是可以产生线程的对象比如在 java平台中Thread对象,Runnable对象。
线程,是指正在执行的一个指令序列。在 java平台上是指从一个线程对象的start() 开始,运行run方法体中的那一段相对独 立的过程。
8
思考
class BeginClass{ public static void main(String[] args){ for(int i=0;i<100;i++) System.out.println("Hello,World!"); }
public class Test { public static void main(String[] args) throws Exception
{ for(int i=0;i<10;i++) { Thread t = new MyThread(); t.start(); }
Runable 创建的线程共享数据区
12
public class Test {
public static void main(String[] args) throws Exception { MyThread mt = new MyThread();
mt.start(); mt.join(); Thread.sleep(3000); mt.start(); } }
2. 继承类Thread public class mythread extends Thread
创建方法:
newthread=new Thread(this); newthread.start();
11
Runable与Thread的区别
使用runable最主要的原因是:java缺少多 重继承的机制,可能你的类已经继承了其 他类了,这时你无法继承自thread类,只 能用runnable了
1
内容
多线程基本概念 Java多线程 创建多线程 线程的状态控制 Java多线程的一些问题 小结
注: 本课件部分材料来自网络
2
1 多线程基本概念
文件 各种系统资源 输入输出装置 文件 各种系统资源 输入输出装置
数据区段
数据区段
程序区段
传统的进程
只有一个地方在执行
程序区段
同时有数个地方在执行
高性能: 多线程的目的是为了增加程序运 行的性能
6
2. Java线程概念
对线程的综合支持是Java技术的一个重要特 色.它提供了thread类、监视器和条件变量的 技术.
虽然许多操作系统支持多线程,但若要用C或 C++编写多线程程序是十分困难的,因为它 们对数据同步的支持不充分.
7
线程对象和线程的区别:
args) throws Exception { R r = new R();
for(int i=0;i<10;i++) new Thread(r).start();
} }
14
package debug; import java.io.*; import ng.Thread; class MyThread extends Thread{
public void run() { for(int i=0;i<100;i++) {try{ Thread.sleep(10); }
catch(Exception e){} System.out.println(x++); } } }
public class Test { public static void main(String[]
多线程的任务
3
多线程的优势:
减轻编写交互频繁、涉及面多的程序的困难 程序的吞吐量会得到改善 由多个处理器的系统,可以并行运行不同的线
程(否则,任何时刻只有一个线程在运行,形成 并发运行)
4
线程与进程的区别:
多个进程的内部数据和状态都是完全独立的, 而多线程是共享一块内存空间和一组系统资源, 有可能互相影响
线程本身的数据通常只有寄存器数据,以及一 个程序执行时使用的堆栈,所以线程的切换比 进程切换的负担要小
5
多线程编程原则
安全性: 如果两个以上的线程访问同一对 象时,一个线程会损坏另一个线程的数据, 这就违反了安全性原则
可行性: 如果仅仅实现了安全性,程序却 在某一点后不能继续执行或者多个线程发 生死锁,那么这样的程序也不能作为真正 的多线程程序来应用
输出:Exception in thread "main" ng.IllegalThreadStateException
说明:通过Thread实例的start(),一个Thread的实例只能产生一个线程
13
class R implements Runnable { private int x = 0;
public int x = 0; public void run()
{ System.out.println(++x); } } class R implements Runnable {
private int x = 0; public void run() { ut.println(++x); } }
}
如果我们成功编译了该JAVA文件,然后 运行
发生的过程…
JVM进程启动, JVM产生一个主线程
还有一些其它线程,例如垃圾回收等
9
剖析多线程程序
class MyThread extends Thread { public void run()
{ System.out.println("Thread say:Hello,World!"); } } public class MoreThreads{ public static void main(String[] args){
相关主题