博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多线程
阅读量:5269 次
发布时间:2019-06-14

本文共 3283 字,大约阅读时间需要 10 分钟。

多线程:

  1. 进程(process):通常指一个正在运行的的程序;每个进程都有自己的独立的一块的内存空间,每个进程的内部数据和状态都是完全独立的
  2. 线程:一个程序在同一时间运行多个任务,每个任务成为一个线程
  3. 多线程程序:能够在一个程序内运行多线程的程序
  4. 线程和进程的区别:线程存在于进程中;每个进程都需要操作系统为其分配独立的内存空间,而同一进程中的所有线程都在同一内存中工作,这些线程可以共享同一块内存和系统资源、

线程的创建:

1.通过继承Thread类的类,重写run()方法:


工具:MyEclipse

1 /** 2  *  3  * @author Administrator 4  *继承Thread类 5  */ 6 public class Thread1 extends Thread{ 7  8     @Override 9     public void run() {10         // TODO Auto-generated method stub11         for(int i=0;i<10;i++){
//方便举例:run()方法这里只打印10句Hello world和名字12 System.out.println("Hello world!"+getName());13 }14 }15 16 }

 

 

 

1 public class Test { 2  3     /** 4      * @param args 5      */ 6     public static void main(String[] args) { 7         // TODO Auto-generated method stub 8         Thread1 a=new Thread1(); 9         a.setName("this is my name!");//通过Thread类的setName(),getName()方法的设置和得到名字,具体查看API帮助文档10         a.start();11     }12 13 } 运行的结果:

Hello world!this is my name!

Hello world!this is my name!
Hello world!this is my name!
Hello world!this is my name!
Hello world!this is my name!
Hello world!this is my name!
Hello world!this is my name!
Hello world!this is my name!
Hello world!this is my name!
Hello world!this is my name!

2.编写一个实现Runnable接口的类:


 

1 /** 2  *  3  * @author Administrator 4  *实现Runnable接口 5  */ 6 public class Runnable1 implements Runnable{ 7  8     @Override 9     public void run() {10         // TODO Auto-generated method stub11         for(int i=0;i<10;i++){
//方便举例:run()方法这里只打印10句Hello world和名字12 System.out.println("Hello world!"+Thread.currentThread().getName());//Runnable接口中没有getName()方法,只有用Thread类的currentThread().getName()方法得到名字13 }14 }15 }
1 public class Test { 2  3     /** 4      * @param args 5      */ 6     public static void main(String[] args) { 7         // TODO Auto-generated method stub 8         Runnable1 r=new Runnable1(); 9         Thread thread=new Thread(r);10         thread.setName("This is a name!");//Runnable接口中没有setName()方法,使用Thread类11         thread.start();//Runnable接口中没有start()方法,使用Thread类12     }13 14 }
1 public static void main(String[] args) {2         // TODO Auto-generated method stub3         new Thread(new Runnable1(),"This is a name").start();//这里用了匿名类的一种形式,结果和之前一样4         5         6         7     }8 9 }
1 public class Test { 2  3     /** 4      * @param args 5      */ 6     public static void main(String[] args) { 7         // TODO Auto-generated method stub 8          9         new Thread(new Runnable(){10             public void run(){11                 for(int i=0;i<10;i++){
//方便举例:run()方法这里只打印10句Hello world和名字12 System.out.println("Hello world!"+Thread.currentThread().getName());13 }14 }15 },"This is a name!").start();//这里用了匿名类的一种形式,结果和之前的一样16 17 }18 19 }
运行的结果:

Hello world!This is a name!

Hello world!This is a name!
Hello world!This is a name!
Hello world!This is a name!
Hello world!This is a name!
Hello world!This is a name!
Hello world!This is a name!
Hello world!This is a name!
Hello world!This is a name!
Hello world!This is a name!

 实现Runnable的方式相对继承Thread类的方式优势:1.可以避免java单继承的局限;2.使用Runnable接口可以将虚拟Cpu(Thread类)与线程要完成的任务有效分离,更好的体现面向对象思想

 

转载于:https://www.cnblogs.com/vencent-2016/p/5405973.html

你可能感兴趣的文章
数据库01 /Mysql初识以及基本命令操作
查看>>
数据库02 /MySQL基础数据类型以及多表之间建立联系
查看>>
Python并发编程04/多线程
查看>>
CF461B Appleman and Tree
查看>>
CF219D Choosing Capital for Treeland
查看>>
杂七杂八的小笔记本
查看>>
51Nod1353 树
查看>>
CF1215E Marbles
查看>>
BZOJ2339 HNOI2011卡农(动态规划+组合数学)
查看>>
octave基本操作
查看>>
axure学习点
查看>>
WPF文本框只允许输入数字[转]
查看>>
dom4j 通用解析器,解析成List<Map<String,Object>>
查看>>
第一个项目--用bootstrap实现美工设计的首页
查看>>
使用XML传递数据
查看>>
TYVJ.1864.[Poetize I]守卫者的挑战(概率DP)
查看>>
0925 韩顺平java视频
查看>>
iOS-程序启动原理和UIApplication
查看>>
SpringMVC入门(二)—— 参数的传递、Controller方法返回值、json数据交互、异常处理、图片上传、拦截器...
查看>>
git的安装
查看>>