java多线程除了Thread类,还可以使用Runnable接口:实现Runnable的run函数,然后new Thread类传入Runnable接口类,调用start启动
线程sleep函数可以使用静态函数Thread.currentThread().sleep。
需要注意的是 只有run内部调用的函数才是在新开辟的线程中。
package com.test.java;
import javafx.scene.Parent;
public class Thread1 implements Runnable {
private Test1 parent =null;
public Thread1(Test1 parent) {
this.parent = parent;
// TODO 自动生成的构造函数存根
}
@Override
public void run() {
// TODO 自动生成的方法存根
while (true) {
try {
Thread.currentThread().sleep(1000);
} catch (InterruptedException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
parent.data++;
System.out.println(parent.data);
}
}
}
package com.test.java;
public class Test1 {
public int data = 0;
public Test1()
{
new Thread(new Thread1(this)).start();
}
public static void main(String[] args) {
new Test1();
}
}
为何需要Runnable类,有时候一个类封装完毕,后期需要加入线程可能不是很容易,实现Runnable接口会在这方面方便很多
package com.test.java;
public class Test1 implements Runnable{
public int data = 0;
public Test1()
{
new Thread(this).start();
}
public static void main(String[] args) {
Test1 test1 = new Test1();
}
@Override
public void run() {
// TODO 自动生成的方法存根
while (true) {
data++;
System.out.println(data);
try {
Thread.currentThread().sleep(100);
} catch (InterruptedException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
}
如果需要线程操作,需要保存Thread指针
package com.test.java;
public class Test1 implements Runnable{
public int data = 0;
public Thread mThread;//保存的线程变量 用来操作此线程
public Test1()
{
new OldThread().start();
mThread=new Thread(this);
mThread.start();
}
public static void main(String[] args) {
new Test1();
}
@Override
public void run() {
// TODO 自动生成的方法存根
while (true) {
data++;
System.out.println(data);
try {
Thread.currentThread().sleep(100);
} catch (InterruptedException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
break;
}
}
}
//用来关闭线程当计数到10
class OldThread extends Thread{
@Override
public void run() {
// TODO 自动生成的方法存根
while (true) {
if (data>10) {
mThread.interrupt();
}
try {
sleep(10);
} catch (InterruptedException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
}
}
今天的文章java runnable接口 sleep_JAVA学习(14) 多线程-Runnable接口分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/10085.html