/ / थ्रेड नहीं चल रहा है, और क्यों जेफ़्रेम सेट्रेसिजेबल काम नहीं कर रहा है - जावा, मल्टीथ्रेडिंग, स्विंग, जेफ़्रेम

धागा नहीं चल रहा है, और क्यों jETT setresizeable काम नहीं कर रहा है - जावा, मल्टीथ्रेडिंग, स्विंग, jframe

यह कार्यक्रम काम क्यों नहीं कर रहा है? (यह "टी प्रिंट" रनिंग ... "नहीं है)

package eu.inmensia.learn;

import java.awt.Canvas;
import java.awt.Dimension;

import javax.swing.JFrame;

public class Client extends Canvas implements Runnable {

private static final long serialVersionUID = 1L;
public static final int WIDTH = 300;
public static final int HEIGHT = WIDTH / 16 * 9;
public static final short SCALE = 3;

private Thread thread;
private JFrame frame = new JFrame();
private boolean running = false;

public Client() {
Dimension size = new Dimension(WIDTH * SCALE, HEIGHT * SCALE);
setPreferredSize(size);
}

public synchronized void start() {
running = true;
thread = new Thread("display");
thread.start(); // start the thread
}

public synchronized void stop() {
running = false;
try{
thread.join(); // end the thread
}catch(InterruptedException e){ e.printStackTrace(); }
}

public void run() {
while(running){
System.out.println("Running...");
}
}

public static void main(String[] args) {
Client client = new Client();
client.frame.setResizeable(false);
client.frame.setTitle("Program test");
client.frame.add(client);
client.frame.pack();
client.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
client.frame.setLocationRelativeTo(null);
client.frame.setVisible(true);

client.start();
}
}

मैं धागे सीखने की कोशिश कर रहा हूँ, और यह एक है, अगर सबसे कठिन नहीं है, जो मैंने कभी सीखा है। OOP इस xD के लिए कुछ भी नहीं है

उत्तर:

उत्तर № 1 के लिए 1

होने के कारण

new Thread("display");

इसे बदलें

new Thread(this)

मुझे उम्मीद है कि आप जानते हैं कि आप क्या कर रहे हैं।


जवाब के लिए 2 № 2

आप इसे गलत तरीके से करते हैं, जब तुमने फोन किया client.start(); इसे स्टार्ट फंक्शन कहेंगे Client क्लास और उस फ़ंक्शन में आप थ्रेड क्लास का एक नया उदाहरण बनाते हैं जिसमें डिफ़ॉल्ट होता है run विधि जो खाली है

आप इस कोड का मतलब हो सकता है:

public synchronized void start() {
running = true;
thread = new Thread(this);
thread.start(); // start the thread
}

उम्मीद है इससे आपको मदद होगी


जवाब के लिए 0 № 3

आपने एक जेनेरिक (BLANK पढ़ें) थ्रेड ऑब्जेक्ट बनाया है। आपको एक पैरामीटर के रूप में अपनी कक्षा में पास होने की आवश्यकता है।

thread = new Thread(this);

यह आपकी रन विधि को थ्रेड ऑब्जेक्ट पर बाँध देगा। धागे का नाम आमतौर पर इतना महत्वपूर्ण नहीं है। को देखें यह उदाहरण