java 多线程
进程:一个应用程序。
线程:一个进程中的执行单元。。
进程可以包含多个线程。
实现线程的两种方式
1. 个类去继承Thread类
通过new创建线程的类
启动线程,可以调用类中继承的start()方法。
package com.zhy.项目11.test;
public class test extends Thread{
private String name;
public test(String name){
this.name = name;
}
public void run(){
for(int i=0;i<10;i++){
System.out.println(name+"是猪"+i);
}
}
public static void main(String[] args) {
test t1 = new test("杨琳");
test t2 = new test("冯琪");
t1.start();
t2.start();
}
}
/*冯琪是猪0
杨琳是猪0
冯琪是猪1
杨琳是猪1
冯琪是猪2
杨琳是猪2
冯琪是猪3
冯琪是猪4
冯琪是猪5
冯琪是猪6
冯琪是猪7
杨琳是猪3
冯琪是猪8
杨琳是猪4
冯琪是猪9
杨琳是猪5
杨琳是猪6
杨琳是猪7
杨琳是猪8
杨琳是猪9*/
我们观察结果会发现这个循环输出是无序的,那么对于单核的cpu来说,所谓多线程都是在同一时间共同运行的吗。
其实并不是,多线程只是由于cpu的处理速度极快,在多个线程之间来回切换,所以给人的感觉是同时进行。
需要注意,给每个线程分配的时间是随机的,由cpu决定,如上面代码的结果,多次运行会有多次不同的结果。
2..编写一个类,继承runna接口,重写run()方法。
package com.zhy.项目11.test1;
class Thread1 extends Thread{
private String name;
public void run(){
for(int i=0;i<10;i++){
System.out.println(name+"是猪");
}
}
}
public class test1 implements Runnable{
private String name;
public test1(String name){
this.name = name;
}
public void run(){
for(int i=0;i<10;i++){
System.out.println(name+"是猪");
}
}
public static void main(String[] args) {
test1 t1 = new test1("杨琳");
Thread t2 = new Thread(t1);
t2.start();
test1 t3 = new test1("冯宝宝");
Thread t4 = new Thread(t3);
t4.start();
for(int i=0;i<10;i++){
System.out.println("我是天才");
}
}
}