runnable接口无start()方法如何解决-亚博电竞手机版
runnable接口无start()方法如何解决?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
自定义线程执行任务类
publicclassmyrunnableimplementsrunnable{ //定义线程要执行的run方法逻辑 @override publicvoidrun(){ for(inti=0;i<10;i ){ system.out.println("我的线程:正在执行!" i); } } } publicclassdemo02{ publicstaticvoidmain(string[]args){ //创建线程执行目标类对象 runnablerunn=newmyrunnable(); //将runnable接口的子类对象作为参数传递给thread类的构造函数 threadthread=newthread(runn); threadthread2=newthread(runn); //开启线程 thread.start(); thread2.start(); for(inti=0;i<10;i ){ system.out.println("main线程:正在执行!" i); } } }
补充:线程的启动的两种方法,runnable接口,run()的调用
实现并启动线程有两种方法
1、写一个类继承自thread类,重写run方法。用start方法启动线程
2、写一个类实现runnable接口,实现run方法。用new thread(runnable target).start()方法来启动
多线程原理:相当于玩游戏机,只有一个游戏机(cpu),可是有很多人要玩,于是,start是排队!等cpu选中你就是轮到你,你就run(),当cpu的运行的时间片执行完,这个线程就继续排队,等待下一次的run()。
调用start()后,线程会被放到等待队列,等待cpu调度,并不一定要马上开始执行,只是将这个线程置于可动行状态。然后通过jvm,线程thread会调用run()方法,执行本线程的线程体。先调用start后调用run,这么麻烦,为了不直接调用run?就是为了实现多线程的优点,没这个start不行。
1.start()方法来启动线程,真正实现了多线程运行。
这时无需等待run方法体代码执行完毕,可以直接继续执行下面的代码;通过调用thread类的start()方法来启动一个线程, 这时此线程是处于就绪状态, 并没有运行。 然后通过此thread类调用方法run()来完成其运行操作的, 这里方法run()称为线程体,它包含了要执行的这个线程的内容, run方法运行结束, 此线程终止。然后cpu再调度其它线程。
2.run()方法当作普通方法的方式调用。
程序还是要顺序执行,要等待run方法体执行完毕后,才可继续执行下面的代码; 程序中只有主线程——这一个线程, 其程序执行路径还是只有一条, 这样就没有达到写线程的目的。
记住:多线程就是分时利用cpu,宏观上让所有线程一起执行 ,也叫并发
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注恰卡编程网行业资讯频道,感谢您对恰卡编程网的支持。