首页 > 代码库 > 1.线程之创建
1.线程之创建
线程的创建有3中,继承Thread,实现Runnable接口,实现Callable接口(了解)
一,继承Thread
1.创建多线程:继承Thread 重写run() 线程体
2.使用多线程:创建子类对象,调用对象.start() 启动线程(加入到线程组,有CPU自己管控)
缺点:单继承
本身存在的线程有 main() gc 异常
代码实现:
package com.cust.create;/** * * 描述: * 1.创建多线程:继承Thread 重写run() 线程体 * 2.使用多线程:创建子类对象,调用对象.start() * 启动线程(加入到线程组,有CPU自己管控) * @author cookie */public class Rabbit extends Thread { @Override public void run() { for(int i = 0; i < 1000; i++){ System.out.println("rabit---->"+i); } } public static void main(String[] args) { Rabbit rab = new Rabbit(); Tor tor = new Tor(); rab.start(); tor.start(); for(int i = 0; i < 1000; i++){ System.out.println("main---->"+i); } }}class Tor extends Thread { @Override public void run() { for(int i = 0; i < 1000; i++){ System.out.println("tor---->"+i); } }}
二,使用Runnbale接口实现多线程
静态代理
1,真实角色
2,代理角色 + 持有真实角色的引用
3,实现相同的接口
优点:1,避免单继承 2,共享资源
1,纯静态代理例子:
package com.cust.create;/** * * 描述:静态代理 * 1,真实角色 * 2,代理角色 * 3,实现相同的接口 * * @author cookie */public class StaticProxy { public static void main(String[] args) { //创建真实角色 Marry you = new You(); //创建代理角色 + 持有真实角色引用 WeddingCompany wc = new WeddingCompany(you); wc.marry(); }}interface Marry { void marry();}//真实角色class You implements Marry{ @Override public void marry() { System.out.println("you and ddd 结婚了...."); }}//婚庆公司---> 代理角色class WeddingCompany implements Marry{ You you; // 持有真实角色的引用 public WeddingCompany() { } @Override public void marry() { you.marry(); } public WeddingCompany(Marry you) { this.you = (You) you; } }
2.多线程实现Runnable实例
package com.cust.create;/** * * 描述:真实角色 * @author cookie */public class Proceduer implements Runnable { @Override public void run() { System.out.println("proceduer 敲代码...."); } public static void main(String[] args) { //创建真实角色 Proceduer pro = new Proceduer(); //创建代理角色 + 持有真实角色的引用 Thread t = new Thread(pro); //调用start()方法 t.start(); }}
3.资源共享实例:
package com.cust.create;/** * * 描述:Runnable优点:1,避免单继承 2,共享资源 * 共享资源实例 ---->12306抢票 * @author cookie */public class Web12306 implements Runnable { int num = 50; @Override public void run() { while(true){ System.out.println(Thread.currentThread().getName() +"抢到了第张"+ num-- +"票"); if(num <=0){ break;//线程结束 } } } public static void main(String[] args) { Web12306 w = new Web12306(); Thread t1 = new Thread(w,"路人甲"); Thread t2 = new Thread(w,"黄牛乙"); Thread t3 = new Thread(w,"攻城狮"); t1.start(); t2.start(); t3.start(); }}
三、实现Callable接口
优点:可以有返回值,异常可以向外抛出
1.线程之创建
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。