Учился многопоточному сокетному программированию на java:
Наткнулся на этот кусок кода:
ServerSocket server=new ServerSocket(8888);
while(true){
counter++;
Socket serverClient=server.accept();
Threads t = new Threads(serverclient)
}
Здесь Для каждого соединения мы создаем объект потоков (класс, который реализовал RunnableИнтерфейс).
Мой запрос: мы не создаем новый объект, а заново инициализируем тот же объект с новым значением.Таким образом, после повторной инициализации новой ссылки на объект, старая ссылка на объект должна быть удалена
. Создает этот код, чтобы понимать конструктор, работающий в Java.
public class free_memory
{
public static void main(String args [])
{ int i;
long UsedMem=Runtime.getRuntime().totalMemory()-Runtime.getRuntime().freeMemory();
System.out.println("Total memory used before execution : " + UsedMem / 1024);
new temp();
UsedMem=Runtime.getRuntime().totalMemory()-Runtime.getRuntime().freeMemory();
System.out.println("Total memory used after execution of 1 constructor: " + UsedMem/ 1024);
for(i=0;i<10;i++)
{
new temp();
}//for
UsedMem=Runtime.getRuntime().totalMemory()-Runtime.getRuntime().freeMemory();
System.out.println("Total memory used after execution of 10 constructor: " + UsedMem/ 1024);
for(i=0;i<10;i++)
{
temp a = new temp();
}//for
UsedMem=Runtime.getRuntime().totalMemory()-Runtime.getRuntime().freeMemory();
System.out.println("Total memory used after execution of 10 constructor: " + UsedMem/ 1024);
int a;
UsedMem=Runtime.getRuntime().totalMemory()-Runtime.getRuntime().freeMemory();
System.out.println("Allocating an integer: " + UsedMem/ 1024);
}//main
}
class temp
{
int a[] = new int[10];
int i;
temp()
{
for(i=0;i<10;i++)
{
a[i] = 10;
}//for
}//constructor
}//class
Вывод:
Total memory used before execution : 1599
Total memory used after execution of 1 constructor: 2048
Total memory used after execution of 10 constructor: 2048
Total memory used after execution of 10 constructor: 2048
Allocating an integer: 2048
Этот код не выделяет никакой дополнительной памяти.
Не могли бы вы помочь? Мы должны создать массив объектов
// Мое предложение должно быть таким:
Socket serverClient=server.accept();
Threads t[i] = new Threads(serverclient)
// оригинальный код
Socket serverClient=server.accept();
Threads t = new Threads(serverclient)
Заранее спасибо