【java】--多线程原理
来源:互联网 发布:知乎怎么做微信销售 编辑:程序博客网 时间:2024/06/18 10:16
自考在《操作系统中》学到了关于进程和线程的概念,结合Demo更好的理解了多线程原理,
这篇博客主要讲一下多线程的创建和我对这个创建过程的理解。
首先展现一张思维导图:
进程:是一个正在执行中的程序。
每一个进程执行都是一个执行顺序,该顺序是一个执行路径,或者叫控制单元。
线程:就是一个进程中的一个独立的控制单元。
线程在控制着进程的执行。
五种状态:
创建线程
方法一:(继承Thread类)
创建步骤:1.定义类继承Threard.
2.复写Thread类中的run方法,
3.调用线程的start方法,
该方法有两个作用:启动线程,调用run方法。
/*这是一个车站买票小例子。假设100张票,四个窗口(4个线程)*/class Ticket extends Thread{ //继承java中的Thread类,此类就是对线程这类事物的描述。private static int ticket=100;public void run(){ //实现run方法while(true){if (ticket>0){System.out.println(Thread.currentThread().getName() +"....sale"+ticket--);}}}}class TicketDemo {public static void main(String[] args){//建立四个线程 Ticket t1=new Ticket(); Ticket t2=new Ticket(); Ticket t3=new Ticket(); Ticket t4=new Ticket(); //通过start方法启动线程。 t1.start(); t2.start(); t3.start(); t4.start();}}运行结果:(看着应该是没有问题的...)
方法二:(实现Runnable接口)
创建步骤:
1.定义类实现Runnable接口
2.覆盖Runnable接口中的run方法
3.通过Thread类建立线程对象
4.将Runnable接口的子类对象作为实现参数传递给Thread类的构造函数。
5.调用Thread类的start方法开启线程并调用Runnable接口子类的run方法。
/*这是一个车站买票小例子。假设100张票,四个窗口(4个线程)*/class Ticket implements Runnable{private int tick=100;public void run(){while(true){if(tick>0){System.out.println(Thread.currentThread().getName()+"...sall...."+tick--);}}}}class TicketDemo2{public static void main(String [] args){//下面的代码,你看懂了吗?这是我要讲的了。。。。Ticket t=new Ticket();Thread t1=new Thread(t);Thread t2=new Thread(t);Thread t3=new Thread(t);Thread t4=new Thread(t);t1.start();t2.start();t3.start();t4.start();}}运行结果假设和上面相同,省略..
解释上面代码:
通过对api的查找,java以提供了Thread类专门来描述线程。
这个类有几个值得注意的地方:
1.构造函数
2方法
总结:
就是说:先要创建线程--->调用start方法来开始线程-->java虚拟机调用run方法
而run方法中就是线程要执行的程序。
由于,在java中单继承的局限性,java设计师就设计了一个Runnable接口,而且里面只有一个方法名,
就是来实现run方法,创建进程。从而有了方法二。
我的理解,可以自己写一个Demo来模仿这样的过程。
/*我们将方法一,和方法二结合起来,做一下实验*/ class Thread{ private interface t;public Thread( Runnable t){this.t=t;}public void run(){t.run();}public void start() //*必须通过start方法才能创建线程。{ this.run();}}interface Runnable {public void run(); }/*方法一 继承Thread类复写run方法创建线程类(创建Thread的子类对象),并调用start方法开启线程。*//*方法二 实现Runnable中的run方法创建线程类(创建Thread的对象),同时将线程中的运行代码加入到Thread构造方法中调用start方法开启线程。*/
通过对api的
- Java多线程原理
- 【java】--多线程原理
- Java多线程安全原理
- java多线程原理-I
- java多线程概念和原理
- java多线程:概念和原理
- Java 多线程断点下载原理
- Java多线程-概念与原理
- Java 多线程:InheritableThreadLocal 实现原理
- Java中多线程原理详解
- Java线程池原理(多线程)
- Java多线程-概念与原理
- Java 多线程:InheritableThreadLocal 实现原理
- Java 多线程:InheritableThreadLocal 实现原理
- 【Java多线程】ThreadLocal实现原理
- java多线程之ConcurrentHashMap实现原理
- java SE 文件多线程下载,断点续传 原理
- Java多线程-(1)概念与原理
- mybatis 一对一的映射(两种方式)
- 淡入动画
- hdu2421(数学题)
- 多线程处理mysql数据
- hdu 5348 MZL's endless loop dfs
- 【java】--多线程原理
- 新浪微博简记
- c语言常见函数
- [leetcode-60]Permutation Sequence(C)
- OC/iOS获取随机数
- Lua中,泛型for循环遍历table时,ipairs和pairs的区别
- ScaleAnimation 缩放动画效果
- 最长回文自负串1 求长度
- Linux时间子系统之一:clock source(时钟源)