面向对象之线程(创建线程和继承start类)
来源:互联网 发布:三菱l系列plc编程手册 编辑:程序博客网 时间:2024/04/20 08:38
面向对象之线程(创建线程和继承start类)
多线程的属性及其特点
1, 进程
2, 线程
3, 多线程存在的定义
4, 线程的创建方式
5, 多线程的特性
/*
进程:是一个正在执行中的程序。
每一个进程执行都有一个执行顺序。该顺序
一个执行路径,或者叫一个控制单元。
线程:就是进程中的一个独立的控制单元。
线程在控制着进程的执行。
一个进程中至少有一个线程。
Java VM 启动的时候会有一个进程java.exe.
该进程中至少一个线程负责java程序的执行。
而且这个线程运行的代码存在于main方法中。
该线程称之为主线程。
扩展:其实更细节说明jvm,jvm启动不止一个线程,还有负责垃圾回收机制的线程。
1,如何在自定义的代码中,自定义一个线程呢?
通过对api的查找,java已经提供了对线程这类事物的描述。就Thread类。
创建线程的第一种方式:继承Thread类。
步骤:
1,定义类继承Thread。
2,复写Thread类中的run方法。
目的:将自定义代码存储在run方法。让线程运行。
3,调用线程的start方法,
该方法两个作用:启动线程,调用run方法。
发现运行结果每一次都不同。
因为多个线程都获取cpu的执行权。cpu执行到谁,谁就运行。
明确一点,在某一个时刻,只能有一个程序在运行。(多核除外)
cpu在做着快速的切换,以达到看上去是同时运行的效果。
我们可以形象把多线程的运行行为在互相抢夺cpu的执行权。
这就是多线程的一个特性:随机性。谁抢到谁执行,至于执行多长,cpu说的算。
为什么要覆盖run方法呢?
Thread类用于描述线程。
该类就定义了一个功能,用于存储线程要运行的代码。该存储功能就是run方法。
也就是说Thread类中的run方法,用于存储线程要运行的代码。
*/
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)
{
//for(int x=0; x<4000; x++)
//System.out.println("Hello World!");
Demo d = new Demo();//创建好一个线程。
//d.start();//开启线程并执行该线程的run方法。
d.run();//仅仅是对象调用方法。而线程创建了,并没有运行。
for(int x=0; x<60; x++)
System.out.println("Hello World!--"+x);
}
}
运行线程要自定义代码,
将自定义代码存储在run方法,让线程运行。
为什么要覆盖run方法呢?
thread类用于描述线程。
该类就定义了一个功能,用于存储线程要运行的代码,该存储功能就是run方法
也就是说Thread类中run 方法,用于存储线程的运行的代码。
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)
{
Demo d = new Demo();//创建了一个线程
//d.start();//开启线程并执行线程的run 方法。
d.run();//仅仅是对象的调用方法,而线程创建了。并没有运行。
for(int x=0;x<60;x++)
{
System.out.println("hrllo word!--"+x);
}
}
}
练习】
class Test extends Thread
{
private String name;
Test(String naem)
{
this.name = name;
}
public void run()
{
for(int x=0;x<60;x++)
{
System.out.println(name+"test run..."+x);
}
}
}
class ThreadTest
{
public static void main(String[] args)
{
Test t1 = new Test("one");
Test t2 = new Test("teo");
//t1.start();
//t2.start();
t1.run();
t1.run();
for (int x = 0;x<60 ;x++ )
{
System.out.println("main.."+x);
}
}
}
- 面向对象之线程(创建线程和继承start类)
- java多线程-概述-创建线程_继承Thread类-run和start特点
- linux C++ 面向对象线程类(封装,继承,多态)
- 面向对象和定时线程
- (42)继承Thread类创建线程
- 线程之start 和 stop,优先级
- java多线程之继承Thread类创建线程类
- 线程的创建和启动---继承Thread类创建线程类
- JAVA之旅(十二)——Thread,run和start的特点,线程运行状态,获取线程对象和名称,多线程实例演示,使用Runnable接口
- 线程管理之线程创建和运行
- 线程之继承Thread类
- 基础篇_线程 第 1 集 创建线程方法之继承Thread类
- JAVA中创建线程对象的两种方法:继承Thread和实现Runable
- 线程和线程对象
- 线程Thread类的start()和run()
- 线程的创建之继承Thread类、线程的生命周期、线程常用的方法、currentThread方法详解
- 面向对象(三特性之继承和多态)
- 多线程(创建线程-继承Thread类)
- VB对低层硬件访问控制
- 异常的特点及特征、写法
- Android之screenOrientation和configChanges使用和注意事项
- libjpeg在windows下的编译
- 每日学习笔记(名字空间,new和delete)
- 面向对象之线程(创建线程和继承start类)
- python的一些注意
- Activity与Service通过广播交换复杂对象数据用法详解
- Android 状态栏提示的另一种方法
- 杂牌3G上网卡在ubuntu下的使用
- 资治通鉴,卷一百一十八,王镇恶的人生追求
- 差分约束系统+spfa算法 poj1201
- GUI学习笔记MyMenuDemo.java
- MVC自定义img控件方法