文档详情

Java多线程学习笔记(全).pdf

发布:2019-01-21约3.84万字共40页下载文档
文本预览下载声明
Java多线程学习笔记(全) 一.线程的创建和启动 java使用Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例。每条线程 的作用是完成一定的任务,实际上就是执行一段程序流(一段顺序流的代码)。Java使用run方法 来封装这样一段程序。 1.继承Thread类创建线程类 /**继承Thread来创建线程类*/ public class FirstThread extends Thread { private int i; //重写run方法,run方法的方法体就是线程执行体 public void run() { for(;i10;i++){ System.out.println(this.getName()+:+i); } } public static void main(String []args){ for(int i=0;i20;i++){ System.out.println(Thread.currentThread().getName()+ ..+i); if(i==10){ System.out.println(); new FirstThread().start(); new FirstThread().start(); System.out.println(); } } } } 结果:红色部分每次运行都不一致,因为多线程也是并发的 main ..0 main ..1 main ..2 main ..3 main ..4 main ..5 main ..6 main ..7 main ..8 main ..9 main ..10 Thread-0:0 Thread-1:0 Thread-1:1 Thread-1:2 Thread-1:3 Thread-0:1 Thread-1:4 Thread-1:5 main ..11 Thread-1:6 Thread-1:7 Thread-1:8 Thread-1:9 Thread-0:2 Thread-0:3 main ..12 main ..13 总结 :从上面结果可以看出Thread-0和Thread-1两条线程输出的 i变量都不连续(注意:i 变量是 FirestThread 的实例属性,而不是局部变量,但因为程序每次创建线程都会创建一个 FirstThread对象,所以Thread-0和Thread-1不能共享该实例属性)。 使用继承Thread类的方法来创建线程类,多条线程之间无法共享线程类的实例变量。 2.实 Runnable接口创建线程类 public class SecondThread implements Runnable { private int i; public void run() { for(;i20;i++){ System.out.println(Thread.currentThread().getName()+:+i); } } public static void main(String [] args){ for(int i=0;i20;i++){ System.out.println(Thread.currentThread().getName()+ ..+i); if(i==10){ SecondThread st=new SecondThread(); //通过new Thread (Runable target,String name)来创建新线程 new Thread(st,线程1).start(); new Thread(st,线程2).start(); } } } 结果:红色部分每次运行都不一致,因为多线程也是并发的 main ..0 main
显示全部
相似文档