JAVA_02 线程
来源:互联网 发布:普希金怎么死的 知乎 编辑:程序博客网 时间:2024/05/23 00:31
多线程:
进程:是一个正在执行的程序。
每一个进程执行都有一个执行顺序。该顺序是一个执行路径。
线程:进程的的一个独立控制单元
线程名称:this.getName()
状态: 运行状态 、 临时状态 、 冻结状态 、 消亡状态
为什么要覆盖run方法?
Thread类用于描述线程。
该类就定义了一个功能,用于存储线程要运行的代码。该存储功能就是run方法
步骤:
1、定义类继承Thread
2、覆写Thread类中run方法
3、调用线程start方法 (作用: 启动线程,调用run方法)
方式1 (通过继承Thread):
Demo.java
public class Demo {public static void main(String[] args) {Test t = new Test();t.start();for(int i=0;i<60;i++){System.out.println("--跑起来了" + i);}}}
Test.java
public class Test extends Thread{//覆写run方法public void run(){for(int i=0;i<60;i++){System.out.println("++跑起来了" + i);}}}
Test.java
public class Test {public static void main(String[] args) {Demo d = new Demo();Thread d1 = new Thread(d);Thread d2 = new Thread(d);Thread d3 = new Thread(d);Thread d4 = new Thread(d);d1.start();d2.start();d3.start();d4.start();}}
Demo.java
public class Demo implements Runnable{private static int tick = 100;public void run(){while(true){if(tick>0){tick--;System.out.println(Thread.currentThread().getName()+"卖票喽,还剩"+tick+"张");}}}}
区别:继承了Thread之后就不能继承其他类 但接口可以多实现
通过构造函数修改线程名称:
public class Test extends Thread{//通过构造函数修改线程名称public Test(String name) {super(name);}//覆写run方法public void run(){for(int i=0;i<60;i++){System.out.println(this.getName()+"***跑起来了" + i);}}}
线程锁
当多条操作执行同一个共享数据时,为了安全问题,使用线程锁 (同步代码块)。
synchronized (随意对象) {需要被同步的代码}
public class Demo implements Runnable{Object obj = new Object();private static int tick = 1000;public void run(){while(true){synchronized (obj) {//线程锁if(tick>0){System.out.println(Thread.currentThread().getName()+"卖票喽,还剩"+--tick+"张");}}}}}
方法2: 直接在函数前假关键字:synchronized (慎用)
缺点:容易吧不需要同步的代码一起包含,造成单线程。
同步函数的锁时this
静态同步方法的锁是:类名.class
0 0
- JAVA_02 线程
- Java_02
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 线程
- 使用 C++ 处理 JSON 数据交换格式
- 第十七章 17.3.1节练习
- kettle转换之多线程
- Andrew Stankevich Contest 23 G - Rectangular Polygon
- Python---字典
- JAVA_02 线程
- uboot与系统内核mtd分区之间的关系
- 第九、十、十一周总结
- POJ 2502 Subway(最短路)
- 读《暗时间》总结
- 调试存储器转储文件
- Visual Studio扩展开发——创建自定义的tabbed工具窗
- 程序猿装 B 指南
- springMvc3.0.5搭建全程