多进程:在操作系统中能(同时)运行多个任务(程序)
多线程:在同一应用程序中有多个顺序流(同时)执行
一个线程是用一个线程对象表示的
创建线程的方法
1.定义一个线程类,它继承Thread并重写其中的方法run(),方法run()称为线程体;
由于Java只支持单继承,用这种方法定义的类不能在继承其他的类。
1.主函数线程
2.ft线程
3.垃圾回收线程
2.实现线程的第二种方法,这也是相对方法一更常用的方法
Thread.sleep(nms);//让出CPU等待nms后进入就绪状态等待抢占CPU
//使用时需要用到try...catch结构
Thread.yield();//让出CPU进入就绪状态
设置线程的优先级
getPriority()//取得优先级
setPriority();//设置优先级
//线程的有先级最大是Thread.MAX_PRIORITY = 10
多线程:在同一应用程序中有多个顺序流(同时)执行
一个线程是用一个线程对象表示的
创建线程的方法
1.定义一个线程类,它继承Thread并重写其中的方法run(),方法run()称为线程体;
由于Java只支持单继承,用这种方法定义的类不能在继承其他的类。
class FirstThread extends Thread{ public void run(){ for(int i=0;i<100;i++) System.out.println("FistThread-->"+i); } } class Test{ public static void main(String args[]) { //生成线程类的对象 FirstThread ft = new FirstThread(); ft.start();//启动线程 //ft.run();//千万不能这样写 //这样写就直接执行run方法里面的内容而没有体现出线程 } }以上代码运行的时候有三个线程
1.主函数线程
2.ft线程
3.垃圾回收线程
class Test{ public static void main(String args[]) { FirstThread ft = new FirstThread(); ft.start(); for(int i=0;i<100;i++){ System.out.println("main-->"+i); } } }修改成如上代码之后就能体现出线程与线程的执行关系了,运行结果如下
main-->0 FistThread-->0 FistThread-->1 main-->1 FistThread-->2 main-->2 FistThread-->3 main-->3 main-->4 FistThread-->4 main-->5 main-->6 FistThread-->5 main-->7 FistThread-->6 FistThread-->7 FistThread-->8 ...多线程在运行的时候是没有规律的,也就是说每次运行的先后顺序可能都不一样,也不可控
2.实现线程的第二种方法,这也是相对方法一更常用的方法
class RunnableImpl implements Runnable{ public void run()//对run进行复写 { for(int i=0;i<100;i++) System.out.println("Runnable-->"+i); } } class Test{ public static void main(String args[]) { //生成一个Runnable接口实现类的对象 RunnableImpl ri = new RunnableImpl(); //生成一个Trread对象,并将Runnable接口实现类的对象作为参数 //传递给该Thread对象 Thread t = new Thread(ri); //通知Thread对象执行方法 t.start(); for(int i=0;i<100;i++){ System.out.println("main-->"+i); } } }中断线程
Thread.sleep(nms);//让出CPU等待nms后进入就绪状态等待抢占CPU
//使用时需要用到try...catch结构
Thread.yield();//让出CPU进入就绪状态
设置线程的优先级
getPriority()//取得优先级
setPriority();//设置优先级
//线程的有先级最大是Thread.MAX_PRIORITY = 10
//最小是Thread.MIN_PRIORITY = 1;优先级越大被执行到的概率也就越大
By Urien 2018年4月14日 14:07:34