黑马程序员--线程
来源:互联网 发布:多益网络绑定战盟 编辑:程序博客网 时间:2024/04/30 03:28
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
线程的学习
线程;就是进程中独立的控制单元。
线程在控制着进程的执行。执行程序就是在执行线程。多线程就是对一个程序同时处理。
一个进程中至少有一个线程。
java VM 启动时会有一个进程Java.exe.
该进程中至少有一个线程负责Java程序的执行,而且这个线程运行的代码存在于main方法中,该线程称之为主线程。
创建线程的方式:一、继承Thread类。
步骤;1,定义类继承Thread。
2,复写Thread类中的run方法。
目的;将自定义代码存储在run方法中,让线程运行。
3,调用线程的start方法。(该方法有两个作用;启动线程,调用run方法)
Thread类就是对线程的描述,当别的类继承了此类之后,拥有了此类的方法也就成了一个线程。但是自定义线程得运行自己的定义的代码,所以就放在run方法中。
线程在控制着进程的执行。执行程序就是在执行线程。多线程就是对一个程序同时处理。
一个进程中至少有一个线程。
java VM 启动时会有一个进程Java.exe.
该进程中至少有一个线程负责Java程序的执行,而且这个线程运行的代码存在于main方法中,该线程称之为主线程。
创建线程的方式:一、继承Thread类。
步骤;1,定义类继承Thread。
2,复写Thread类中的run方法。
目的;将自定义代码存储在run方法中,让线程运行。
3,调用线程的start方法。(该方法有两个作用;启动线程,调用run方法)
Thread类就是对线程的描述,当别的类继承了此类之后,拥有了此类的方法也就成了一个线程。但是自定义线程得运行自己的定义的代码,所以就放在run方法中。
示例:主线程和一个线程的交替运行。
步骤;
1,定义类实现Runnable接口。
2,覆盖Runnable接口中的run方法。
run方法中存放要运行的代码。
3,通过Thread类建立线程对象。
4,将Runnable接口的子类对象作为实际参数传递给Thread类的构造函数。(Thread类中有一个构造函数能接受Runnable接口类型的对象)
5,调用Thread类的start方法开启线程并调用Runnable接口子类的run方法。
实现方式和继承方式的区别;
实现的好处;避免了单继承的局限性。(Java中类只能单继承)
(多线程处理同一个对象,共享同一个资源)
在定义线程时,建议使用实现方式。
class Demo extends Thread {public void run()//开启的线程执行{for (int x=0;x<60 ;x++ ){System.out.println("Demo run -"+x);}}}class ThreadDemo{public static void main(String[] args) //主线程执行main方法中的代码{Demo d = new Demo();//创建一个线程但是,没有开启d.start();//开启线程,并执行线程的run方法//d.run();没有开启线程,主线程直接运行run方法。for (int x=0;x<60 ; x++){System.out.println("Hello World!"+x);}}}创建线程的第二种方式:实现接口Runnable接口
步骤;
1,定义类实现Runnable接口。
2,覆盖Runnable接口中的run方法。
run方法中存放要运行的代码。
3,通过Thread类建立线程对象。
4,将Runnable接口的子类对象作为实际参数传递给Thread类的构造函数。(Thread类中有一个构造函数能接受Runnable接口类型的对象)
5,调用Thread类的start方法开启线程并调用Runnable接口子类的run方法。
实现方式和继承方式的区别;
实现的好处;避免了单继承的局限性。(Java中类只能单继承)
(多线程处理同一个对象,共享同一个资源)
在定义线程时,建议使用实现方式。
class Ticket implements Runnable {private int tick = 100;public void run(){while (true){if(tick>0)System.out.println(Thread.currentThread().getName()+".....sale:"+tick--);}}}class TicketDemo{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();}}
0 0
- 黑马程序员之多线程
- 黑马程序员-----线程复习
- “黑马程序员”~线程例题
- 黑马程序员_线程
- 黑马程序员 线程总结
- 黑马程序员:线程池
- 黑马程序员-线程同步
- 黑马程序员-线程入门
- 黑马程序员----线程
- 黑马程序员-线程
- 黑马程序员-----线程
- 黑马程序员:java线程
- 黑马程序员--线程池
- 黑马程序员--C#线程
- 黑马程序员_线程
- 黑马程序员_线程
- 黑马程序员-----线程
- 黑马程序员---深入线程
- 【BestCoder】 HDOJ 5163 Taking Bus
- 内核设备模型分析
- 发送带附件的邮件 java
- 【AC自动机】 HDOJ 5164 Matching on Arrayy
- 不止是产品经理(一)----作为刚入行产品经理,如何开展工作?
- 黑马程序员--线程
- USACO 2.1 The Castle
- 设计模式一:单例模式
- Android ADB命令大全(通过ADB命令查看wifi密码、MAC地址、设备信息、操作文件、查看文件、日志信息、卸载、启动和安装APK等)
- 解决 ubuntu14.04 chromium flash 问题
- Android内存泄露分析(MemoryAnalyzer工具)
- 12.3.3.1 序列表达式中的平面映射
- 我的2014
- 使用XFire+Spring构建Web Service(一)——helloWorld篇