JAVA多线程实例代码
代码块1:阐明多线程机制
package Thread_demo;
public class Example_one1 {
public static void main(String[] args) {
//调用另一个类,开启新的线程运行
//创建Thread类的子类的对象
MyThread mythread=new MyThread();
mythread.start();
//对象调用start方法开启新的线程,并不是调用run方法
/*为实现多线程的效果,在主线程中写上一段代码看执行结果
* run方法中的语句和main方法中的语句交替运行*/
for (int i = 0; i < 100; i++) {
System.out.println("--->main方法中输出的值:"+i);
}
}
}
//自定义类,继承Thread,实现多线程
class MyThread extends Thread //继承Thread
{
//重写run方法
@Override
public void run() {
for (int i = 0; i < 100; i++) {
//将要执行的代码写下run方法中
System.out.println("--->run方法中输出的值:"+i);
}
}
}
代码块2:证明JVM是多线程->垃圾回收机制级别最低
package Thread_demo;
/*证明JVM是多线程的*/
public class Example_two2 {
public static void main(String[] args) {
for (int i = 0; i < 1000000; i++) {
new Demo();
}
for (int i = 0; i < 10000; i++) {
System.out.println("------>我是主线程的执行代码!");
}
}
}
class Demo {
@Override
protected void finalize() throws Throwable {
System.out.println("调用垃圾回收机制,回收不被引用的对象!");
}
}
以下实现多线程的四种方法:
代码块3:匿名内部类实现多线程==>Runable接口方法
package Thread_demo;
public class InnerRunable_1 {
/* 匿名内部类实现多线程==>Runable接口方法
* 结果:-->内部类线程与main线程交替运行
* */
public static void main(String[] args) {
//内部类
new Thread(new Runnable() { //1、创建Runable接口内部类对象
@Override
public void run() { //2、重写run方法
for (int i = 0; i < 1000; i++) {//3、自定义执行语句
System.out.println("内部类线程报数:"+i);
}
}
}).start();
for (int i = 0; i < 1000; i++) {
System.out.println("main线程报数:"+i);
}
}
}
代码块4:匿名内部类实现多线程===>Thread类方法
package Thread_demo;
public class InnerThread {
/*匿名内部类实现多线程===>Thread类方法*/
public static void main(String[] args) {
//1、创建Thread匿名内部类对象
Thread thread=new Thread(){
//2、重写run方法
@Override
public void run() {
//3、自定义执行语句
for (int i = 0; i < 1000; i++) {
System.out.println("内部类线程报数:"+i);
}
}
};
//开启执行线程
thread.start();
for (int i = 0; i < 1000; i++) {
System.out.println("main线程报数:"+i);
}
}
}
代码块5:创建新的线程:方法1==>继承Thread类
代码块5:创建新的线程:方法2==>实现Runnable接口
package Thread_demo;
public class Mythread_2Mathds {
public static void main(String[] args) {
//创建方法1的对象
Mythread_thread firstThread=new Mythread_thread();
firstThread.start();//开启线程
System.out.println("********************************");
//创建方法2的对象
Mythread_run secondThread=new Mythread_run();
//创建Thread类对象,把方法2类对象当做Thread类的构造方法的参数传递进去
Thread second=new Thread(secondThread);
second.start();//Thread对象开启新的线程
System.out.println("********************************");
//main线程方法
for (int i = 0; i < 1000; i++) {
System.out.println("main线程报数:"+i);
}
}
}
/*创建新的线程:方法1==>继承Thread类*/
class Mythread_thread extends Thread{//1、继承Thread
@Override
public void run() { //2、实现run方法
for (int i = 0; i < 1000; i++) {//3、自定义执行语句
System.out.println("继承Thread类 --线程报数:"+i);
}
}
}
/*创建新的线程:方法2==>实现Runnable接口*/
class Mythread_run implements Runnable{//1、自定义类实现Runnable接口
@Override
public void run() {//2、重写run方法
for (int i = 0; i < 1000; i++) {//3、自定义执行语句
System.out.println("实现Runnable接口--线程报数:"+i);
}
}
}