首页 > 代码库 > 多线程2
多线程2
进程:正在执行的应用程序。一个应用程序运行时内存分配的空间。
线程:进程中一个程序执行的控制单元,一条执行路径。负责程序的执行顺序。作用:1.启动线程 2.运行run方法。目的是将自定义的代码存储在run方法中,让线程运行cpu每次只执行一个程序,只是在快速的不同线程间切换,表现了多线程的随机性
示例: 模拟火车站四个售票窗口同时开通售票、票数20张、预计全部售完的情况。
第一种创建线程的方式
class Mlpc extends Thread //第一步、定义类继承Thread类{ private int ticket = 20; public void run() //第二步、覆写run方法,把需要被现场运行的代码都写在其中 { while(true) { if(ticket>0) { System.out.println(Thread.currentThread()+" "+ticket--); } } }} class mlpcDemo { public static void main(String[] args) { Mlpc m1 = new Mlpc();//第三步、通过创建Thread类的子类对象,创建了线程对象。 Mlpc m2 = new Mlpc(); Mlpc m3 = new Mlpc(); Mlpc m4 = new Mlpc(); m1.start();//第四步、调用start方法,开启线程,执行run方法 m1.start(); m1.start(); m1.start(); }}
很明显,结果会出现四条线程‘各自为营’,各卖20张票的情况。
以上结果肯定不符合要求,于是我们使用第二种创建线程的方式。
class Mlpc implements Runnable//第一步、定义类实现Runnable接口{ private int ticket = 20; public void run() //第二步、覆盖接口run方法,封装线程要运行的代码 { while(true) { if(ticket>0) { System.out.println(Thread.currentThread()+" "+ticket--); } } }} class mlpcDemo { public static void main(String[] args) { Mlpc m = new Mlpc();
Thread th0 = new Thread(m);//第三步、通过Thread类 创建了线程对象。 Thread th1 = new Thread(m); Thread th2 = new Thread(m); Thread th3 = new Thread(m); th0.start();//第四步、调用start方法,开启线程,执行run方法 th1.start(); th2.start(); th3.start(); }}
这样就对了。
run方法和 start方法
run方法 仅仅是对象调用方法,并没有运行线程 start方法 是开启线程并且执行线程中的run方法
多线程2
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。