Java学习笔记(八)――java多线程(一)

2014-11-24 02:31:17 · 作者: · 浏览: 2
【前面的话】
实际项目在用spring框架结合dubbo框架做一个系统,虽然也负责了一块内容,但是自己的能力还是不足,所以还需要好好学习一下基础知识,然后做一些笔记。希望做完了这个项目可以写一些dubbo框架和spring框架方面的总结。
学习过程中的小知识点总结,基础知识,选择 阅读
【线程定义】
在学习操作系统的时候,学习过什么是进程,什么是线程,下面这只维基百科里面关于线程的定义,大家可以看一下:
定义:线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在Unix System V及SunOS中也被称为轻量进程(lightweight processes),但轻量进程更多指内核线程(kernel thread),而把用户线程(user thread)称为线程。
【实现方法】
1. 第一种继承:Thread类
复制代码
1 class 类名extends Thread{
2 方法1;
3 方法2;
4 ……
5 public void run(){
6 实现代码
7 }
8 }
复制代码
2. 第二种:实现Runnable接口
复制代码
1 class 类名 implements Runnable{
2 方法1;
3 方法2;
4 ……
5 public void run(){
6 实现代码
7 }
8 }
复制代码
【三段代码】
第一段代码,就是一个很简单,就是和多线程没有关系的一段测试代码。
第二段代码,使用继承Thread的方法实现多线程。
第三段代码,使用实现Runnable接口的方法实现多线程。
第一段代码:
复制代码
1 public class NoThreadTest {
2 private String noThread1;
3 public NoThreadTest(){
4 }
5 public NoThreadTest(String noThread1){
6 this.noThread1=noThread1;
7 }
8 public void run(){
9 for(int i=0;i<3;i++){
10 System.out.println(noThread1+"非多线程运行结果 "+i);
11 }
12 }
13 public static void main(String[] args){
14 NoThreadTest maintest1=new NoThreadTest("我是A");
15 NoThreadTest maintest2=new NoThreadTest("我是B");
16 maintest1.run();
17 maintest2.run();
18 }
复制代码
执行结果:
1 我是A非多线程运行结果 0
2 我是A非多线程运行结果 1
3 我是A非多线程运行结果 2
4 我是B非多线程运行结果 0
5 我是B非多线程运行结果 1
6 我是B非多线程运行结果 2
第二段代码:
复制代码
1 public class ThreadTest extends Thread {
2 private String Thread1;
3 public ThreadTest(){
4 }
5 public ThreadTest(String Thread1){
6 this.Thread1=Thread1;
7 }
8 public void run(){
9 for(int i=0;i<3;i++){
10 System.out.println(Thread1+"多线程运行结果 "+i);
11 }
12 }
13 public static void main(String[] args){
14 ThreadTest maintest1=new ThreadTest("我是A");
15 ThreadTest maintest2=new ThreadTest("我是B");
16 maintest1.run();
17 maintest2.run();
18 System.out.println("..............我是分割线........................");
19 maintest1.start();
20 maintest2.start();
21 }
22 }
复制代码
执行结果:(每一次执行的结果都是不一样的,这只是其中的某一种)
复制代码
1 我是A多线程运行结果 0
2 我是A多线程运行结果 1
3 我是A多线程运行结果 2
4 我是B多线程运行结果 0
5 我是B多线程运行结果 1
6 我是B多线程运行结果 2
7 ..............我是分割线........................
8 我是A多线程运行结果 0
9 我是B多线程运行结果 0
10 我是B多线程运行结果 1
11 我是B多线程运行结果 2
12 我是A多线程运行结果 1
13 我是A多线程运行结果 2
复制代码
第三段代码:
复制代码
1 public class ThreadTest2 implements Runnable {
2 private String Thread1;
3 public ThreadTest2(){
4 }
5 public ThreadTest2(String Thread1){
6 this.Thread1=Thread1;
7