线程的创建和运行(未完待续)
来源:互联网 发布:js接口安全域名 作用 编辑:程序博客网 时间:2024/06/05 18:50
在Java语言中,线程跟其他所有元素一样,都是对象(Object), Java提供了两种方式来创建线程。
(1)继承 Thread 类,并覆盖 run()方法
(2)创建一个实现Runnable接口的类。 使用带参数的Thread构造器来创建Thread对象。这个参数就是实现Runnable接口的类的一个对象。
Tips:
生成main方法的快捷键:command + j,然后输入main
示例:用方法二创建一个简单的程序,这个程序将创建并运行10个线程。每个线程用以计算和打印乘以1~10后的结果。
步骤如下:
1. 创建一个名为Calculator的类,它实现了Runnable接口。
public class Calculator implements Runnable{
2. 声明一个名为number的私有(private) int属性。 编写这个类的一个构造器,用来为属性number设置值。
private int number;public Calculator(int number){ this.number=number;}
3. 编写 run() 方法。 这个方法用来执行我们创建的线程的指令,本例子中它将对制定的数字进行乘法表运算。
@Overridepublic void run(){ for(int i=1; i<=10; i++){ System.out.printf("%s: %d * %d = %d\n", Thread.currentThread().getName(),number,i,i*number);}}
4.创建main()方法, 在main()方法中,创建一个执行十次的村欢,每个循环中创建一个Calculator对象,一个Thread对象,这个Thread对象使用刚创建的Calculator对象做为构造器的参数,
然后调用刚创建的Thread对象的strat() 方法。
public static void main(String[] args) { for (int i = 1; i <= 10; i++) { Calculator calculator = new Calculator(i); Thread thread = new Thread(calculator); thread.start(); } }
点击右键运行
每个Java程序都至少有一个执行线程。
当运行程序的时候,JVM将启动这个执行线程来调用程序的main()方法。
当调用Thread对象的star() 方法时候,另一个执行线程将被创建。因而在我们的程序中,每次调用start()方法时,都会创建一个执行线程。
当一个程序的所有线程都运行完成时,更确切的说,当所有非守护(non-daemon)线程都运行完成的时候,这个Java程序将宣告结束。如果初始线程(执行main( ) 方法的线程)结束了,其余的线程仍将继续执行直到他们运行结束。如果某一个线程调用了System.exit( )指令来结束程序的运行,所有的线程都将结束。
对一个实现了Runnable接口的类来说,创建Thread对象不会创建一个新的执行线程; 同样的,调用它的run( )方法,也不会创建一个新的执行线程,只有调用它的start( ) 方法时, 才会创建一个新的执行线程。
阅读全文
0 0
- 线程的创建和运行(未完待续)
- java中的线程和进程-未完待续
- DBN和DNN的区别(未完待续)
- 线程的创建和运行
- 线程通信 线程同步(未完待续)
- c语言的一些总结和探讨(未完待续中).
- c语言的一些总结和探讨(未完待续中).
- 关于DOM和节点的问题(未完待续...)
- Java中HashMap和TreeMap的区别(未完待续)
- 【未完待续.....】C++字符串流 istringstream 和 ostringstream 的用法
- 未完待续的几个命令
- java线程的创建和运行
- Java线程的创建和运行
- java多线程---线程的创建和运行
- 未完待续
- 未完待续
- 未完待续
- 未完,待续
- C language tool
- 1334: 算法实现题 2-12 双色 Hanoi 塔问题
- 神经网络中的权重初始化:Why and How
- 线程简介
- 集成springmvc和mybatis环境的Javaweb基础框架,省去新手搭建繁琐环境的苦恼
- 线程的创建和运行(未完待续)
- Thinking in BigData(八)大数据Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解
- 代码处理iOS的横竖屏旋转
- Java多线程 -- JUC包源码分析2 -- Copy On Write/CopyOnWriteArrayList/CopyOnWriteArraySet
- 跨进程通信AIDL的学习
- HDUOJ 4282 A very hard mathematic problem
- BroadcastReceiver中使用startActivity报错
- 设计模式初步
- Android Fragment和Activity