class myThread extends Thread{
时间: 2023-07-20 21:37:32 浏览: 152
这是一个Java中定义线程的基本语法。在这段代码中,我们定义了一个名为“myThread”的类,继承自Thread类。这意味着我们可以使用Thread类中的方法来控制和管理该线程。
为了实现线程的执行逻辑,我们需要重写Thread类中的run()方法。在run()方法中,我们可以编写自己的线程执行逻辑。
例如:
```
class myThread extends Thread {
public void run() {
System.out.println("线程开始执行");
// 这里编写线程的执行逻辑
System.out.println("线程执行完毕");
}
}
```
在上面的示例中,我们重写了run()方法,并在其中输出了一些信息,以表示线程的执行过程。当我们创建一个myThread对象并调用其start()方法时,该线程就开始执行run()方法中定义的逻辑。
相关问题
class MyThread extends Thread { public static void main(String args[]) { MyThread t = new MyThread(); MyThread s = new MyThread(); t.start(); System.out.print("one."); s.start(); System.out.print("two."); } public void run() { System.out.print("Thread"); } }结果是
结果可能是 "one.Threadtwo.Thread",因为在主线程中,先启动了线程t并打印了"one.",然后启动了线程s并打印了"two."。在两个子线程中,都会打印"Thread",但是它们的执行顺序是不确定的,可能是先打印出t的"Thread",然后是s的"Thread",也可能是先打印出s的"Thread",然后是t的"Thread"。
分析以下代码,要实现多个线程一起完成打印1-3数据的功能,完成横线处缺失部分的代码() class MyThread implements Runnable { private int num = 3; @Override public void run() { while (true) _____________请选择正确的选项__________ { if (num == 0) break; else { System.out.println(Thread.currentThread().getName() + " - " + num); num--; } } } } MyThread my=new MyThread(); Thread t1=new Thread(my) Thread t2=new Thread(my) T1.start() my.run() T2.start() my.run() class MyThread extends Thread{} MyThread th1=new MyThread(); MyThread th2=new MyThread(); th1.start() th1.run() th2.start() th2.run() synchronized (MyThread.class) synchronized (this) synchronized () lock.lock();
正确的选项应该是 synchronized (this)。因为多个线程要共享同一个 Runnable 对象 my,所以需要使用同步锁来保证线程安全。synchronized (this) 表示使用当前对象 my 作为锁,只有获得锁的线程才能执行其中的代码,其他线程需要等待。而 synchronized (MyThread.class) 则是使用 MyThread 类作为锁,这样会限制所有 MyThread 的对象同时只能执行一个代码块,与本题的需求不符。synchronized() 是无法通过编译的,lock.lock() 则需要在代码中显式地释放锁,容易出现死锁等问题,不太适合此处的场景。
阅读全文